Python 学习笔记(十五)Python类拓展(一)继承
继承
继承(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类拓展(一)继承的更多相关文章
- Python学习第十五篇——类继承和类实例化
学习Python类时,我们明白了类的本质,以及所谓的面向对象编程思想强调的对事物本身的属性,我们对某一类事物进行描述——采用了很多方法,这些方法描述了类的属性(比如猫科动物的眼睛,四肢,是否哺乳类等等 ...
- python 学习笔记十五 web框架
python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...
- python 学习笔记十五 django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- python学习笔记(十五)-unittest单元测试的一个框架
unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 ...
- python学习笔记十二:类的定义
demo #!/usr/bin/python class Person: name = 'jim' age = 25 def say(self): print 'My name is ' + self ...
- Python学习第十五课——类的基本思想(实例化对象,类对象)
类的基本思想 类:把一类事物的相同的特征和动作整合到一起就是类类是一个抽象的概念 对象:就是基于类而创建的一个具体的事物(具体存在的)也是特征和动作整合到一块 对象写法 # 对象写法 def scho ...
- python学习笔记十五:日期时间处理笔记
#-*- coding: utf-8 -*- import datetime #给定日期向后N天的日期 def dateadd_day(days): d1 = datetime.datetime.no ...
- python学习笔记(十五)-异常处理
money = input('输入多少钱:') months = input('还几个月:') try: res = calc(int(money),int(months)) except ZeroD ...
- Python学习笔记整理(五)Python中的列表.
列表和字段,这两种类型几乎是Python所有脚本的主要工作组件.他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套. 一.列表 列表的主要属性: *任意对象的有序集合 从 ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
随机推荐
- ES6 模块化与 CommonJS 模块化
ES6 模块化 import命令用于输入其他模块提供的功能;export命令用于规定模块的对外接口. export 可以有多个,export default 仅有一个 a.js 模块a文件 导出多个方 ...
- MySQL5.5登陆
通过cmd登陆 mysql -h localhost -P 3306 -u root -p123456 h后面跟的是域名或IP地址:大写的P后面跟的是端口号:u后面跟的是用户名:小写的p后面跟的是密码 ...
- linq返回的IEnumerable<T>泛型不能被列举计算大于1次
在分页获取Take后面加ToList()方法就能得到正确结果,为什么?
- 利用Swig转换C++代码为C#可用的代码
详细的文件路径为:http://user.qzone.qq.com/1259374136/blog/1432887689 Swig学习教程 1.Swig的基本介绍 SWIG(Simplified Wr ...
- 英文版win10更新以后, 中文软件变成乱码
原因是非Unicode程序的语言设置失效了 在区域设置里把当前系统区域设置改成"英语(美国)", 重启电脑后再改回"中文(简体, 中国)", 再重启就好了.
- Head First HTML和CSS(一)
Web语言 HTML和CSS是我们用来创建网页的语言. Web服务器存储并提供由HTML和CSS创建的网页,浏览器获取页面,并根据HTML和CSS显示网页的内容 HTML是超文本标记语言(HyperT ...
- UltraISO制作U盘启动盘教程
Step 1: 首先需要安装UltraISO,完成安装后打开软碟通,文件->打开,打开我们的iso镜像 安装包可以百度搜索 Step 2:然后选择我们的U盘 Step 3:然后点击启动-> ...
- 一些实用的adb命令
一.前提: 1.打开手机调试模式,确保手机已正常连接电脑,可在电脑上通过adb devices命令查看,结果如下说明连接成功: List of devices attached90xxxxc9 dev ...
- EXCHANGE 2013 TLS传输层安全
默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮 ...
- Bootstrap 4/3 页面基础模板 与 兼容旧版本浏览器
Bootstrap 3 与 4 差别很大,目录文件结构.所引入的内容也不同,这里说说一下 Bootstrap 引入的文件.网页模板和兼容性问题.本网站刚刚搭建好,正好发一下文章原来测试网站. Boot ...