继承

继承(Inheritance):是面向对象软件技术当中的一个概念。如果一个类别A "继承自" 另一个类B,就把这个A称为“B的子类”,而把B称为“A的父类”,也可以称“B是A的超类”。

          重用代码

          属性和方法的继承

单继承和super函数

示例1:子类调用父类update_web(),执行父类update_web()

 #! /usr/bin/env python
# coding:utf-8 class Person(object): #新式类 def __init__(self,web_site): #初始化方法
self.web =web_site def update_web(self,site):
self.web =site
return self.web class Cc(Person): #继承了Person类,子类继承了一个父类,叫单继承 def about_me(self,name,site): #继承关系,调用父类update_web方法
my_web =self.update_web(site)
return {"name":name,"web":my_web} if __name__ =="__main__":
my =Cc("www.weibo.com")
print my.about_me("cc","cc.blog.com")
print my.web #output
#{'web': 'cc.blog.com', 'name': 'cc'}
#cc.blog.com

示例2:子类重写父类update_web()方法,在子类中调用,执行子类的update_web()方法

 #! /usr/bin/env python
# coding:utf-8 class Person(object): #新式类 def __init__(self,web_site): #初始化方法
self.web =web_site def update_web(self,site):
self.web =site
return self.web class Cc(Person): #继承了Person类,子类继承了一个父类,叫单继承 def update_web(self,site,lang="python"):#此处重写了父类的方法,或者是覆盖了父类的方法
self.web =site
self.lang =lang
return self.web,self.lang def about_me(self,name,site): #继承关系,此处调用子类的方法
my_web,my_lang=self.update_web(site)
return {"name":name,"web":my_web,"lang":my_lang} if __name__ =="__main__":
my =Cc("www.weibo.com")
print my.about_me("cc","cc.blog.com") #output
#{'lang': 'python', 'web': 'cc.blog.com', 'name': 'cc'}

示例3:调用父类中被覆盖的方法,使用super()函数,或者父类.方法名

 #! /usr/bin/env python
# coding:utf-8 class Person(object): #新式类 def __init__(self,web_site): #初始化方法
self.web =web_site def update_web(self,site):
self.web =site
return self.web class Cc(Person): #继承了Person类,子类继承了一个父类,叫单继承 def __init__(self,teacher,web_site):
self.teacher =teacher
#Person.__init__(self,web_site) #调用父类的init方法
super(Cc,self).__init__(web_site) #调用父类中被覆盖的方法 def update_web(self,site,lang="python"):#此处重写了父类的方法,或者是覆盖了父类的方法
self.web =site
self.lang =lang
return self.web,self.lang def your_teacher(self):
return self.teacher def about_me(self,name,site): #继承关系,此处调用子类的方法
my_web,my_lang=self.update_web(site)
return {"name":name,"web":my_web,"lang":my_lang} if __name__ =="__main__":
my =Cc("cclaoshi","cnblog.com")
print my.your_teacher()
print my.teacher
print my.web #output
#cclaoshi
#cclaoshi
#cnblog.com

多重继承

示例:

 #! /usr/bin/env python
# coding:utf-8 class Person(object): #新式类
def eye(self):
print "two eyes" def breast(self,n):
print "The breast is:",n class Girl(object):
def __init__(self,age):
self.age =age def color(self):
print "The girl is white." class BeaGirl(Person,Girl):#多继承,写入两个类的名字,将父类的所有方法继承过来
pass if __name__ =="__main__":
kong = BeaGirl(28)
kong.eye()
kong.breast(90)
kong.color()
print kong.age #output
#two eyes
#The breast is: 90
#The girl is white.
#

示例:多重继承的执行顺序,广度优先

 #! /usr/bin/env python
# coding:utf-8 class K1(object): #新式类
def foo(self):
print "K1-foo" class K2(object):
def foo(self):
print "K2-foo" def bar(self):
print "K2-bar" class J1(K1,K2):#多继承,写入两个类的名字,将父类的所有方法继承过来
pass class J2(K1,K2):
def bar(self):
print "J2-bar" class C(J1,J2):
pass if __name__ =="__main__":
print C.__mro__
m =C()
m.foo()
m.bar() #这种继承顺序称为广度优先
#output
#(<class '__main__.C'>, <class '__main__.J1'>, <class '__main__.J2'>,
# <class '__main__.K1'>, <class '__main__.K2'>, <type 'object'>)
#K1-foo
#J2-bar

Python 学习笔记(十五)Python类拓展(一)继承的更多相关文章

  1. Python学习第十五篇——类继承和类实例化

    学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...

  2. python 学习笔记十五 web框架

    python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...

  3. python 学习笔记十五 django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  4. python学习笔记(十五)-unittest单元测试的一个框架

    unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 ...

  5. python学习笔记十二:类的定义

    demo #!/usr/bin/python class Person: name = 'jim' age = 25 def say(self): print 'My name is ' + self ...

  6. Python学习第十五课——类的基本思想(实例化对象,类对象)

    类的基本思想 类:把一类事物的相同的特征和动作整合到一起就是类类是一个抽象的概念 对象:就是基于类而创建的一个具体的事物(具体存在的)也是特征和动作整合到一块 对象写法 # 对象写法 def scho ...

  7. python学习笔记十五:日期时间处理笔记

    #-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...

  8. python学习笔记(十五)-异常处理

    money = input('输入多少钱:') months = input('还几个月:') try: res = calc(int(money),int(months)) except ZeroD ...

  9. Python学习笔记整理(五)Python中的列表.

    列表和字段,这两种类型几乎是Python所有脚本的主要工作组件.他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套. 一.列表 列表的主要属性: *任意对象的有序集合 从 ...

  10. python学习笔记(十六)-Python多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

随机推荐

  1. 关于<!DOCTYPE html>

    1.定义 DOCTYPE标签是一种标准通用标记语言的文档类型声明,目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档. <!DOCTYPE> 声明必须是 ...

  2. 微信小程序-movable-view

    <view class="page-body"> <view class="page-section"> <view class= ...

  3. iOS各种profile文件

    iOS是一个非常封闭的系统.授权文件(.mobileprovision)和签名证书文件(.cer)的存在就是为了验证身份信息.一般情况下,比如ssh登陆或者scp需要私钥.公钥对即可,iOS也是基本采 ...

  4. Maximum Product Subarray 最大连续乘积子集

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  5. 图片裁剪(基于RxPaparazzo)

    图片裁剪(基于RxPaparazzo) 前言:基于RxPaparazzo的图片裁剪,图片旋转.比例放大|缩小. 效果: 开发环境:AndroidStudio2.2.1+gradle-2.14.1 涉及 ...

  6. 《APP移动终端决胜之道视觉设计艺术》学习笔记

    1.20-2.9 1.合理的层级化2.信息的整合(短信收发件箱),信息的整合就像创建文件夹,可以将相关的东西放在一起,以便于使用者搜索与查找3.(微信聊天界面)相比之下使用了对话框图形的界面,元素更加 ...

  7. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  8. IEC_62304_CheckList

    IEC 62304 Reference Software Lifecycle Process Applicable for Class A Class B Class C PRIMARY LIFECY ...

  9. Hadoop完全分布分布式配置

    1.准备三台虚拟机.安装Ubuntu操作系统,具体过程省略 2.三台虚拟机上分别安装Java环境,具体过程省略(保证三者的Java路径一致) 3.三台机器分别配置ssh本机免密码登录 (1)安装ssh ...

  10. [翻译] LTInfiniteScrollView

    LTInfiniteScrollView 效果: Usage - 使用 Create the scroll view by: 通过以下方式来创建出scroll view self.scrollView ...