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),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
随机推荐
- TAT
瞎扯 继\(HNOI,\)学科\(,CTSC, APIO\)连续爆炸之后 曾一度的怀疑人生,没有任何搞学习的欲望 不断的反省自己:我为什么这么菜? 然后回去搞学科,一直处于一个颓废的状态 后来得知\( ...
- JavaWeb学习总结(四):Servlet开发(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象
判断事件触发的元素: var tag = window.event.target || window.event.srcElement; if (tag.tagName.toLowerC ...
- PID控制算法
PID控制算法 四轴如何起飞的原理 四轴飞行器的螺旋桨与空气发生相对运动,产生了向上的升力,当升力大于四轴的重力时四轴就可以起飞了. 四轴飞行器飞行过程中如何保持水平: 我们先假设一种理想状况:四个电 ...
- android资源的诡异问题
最近,新开发版本,正在处于扫BUG的阶段. 发现一个比较诡异的问题,一个控件的颜色,背景色与预先设定的值,发生不一致.其他的类型的控件有同样的设置,但是现实结果正常. 今天,专门解决这个问题. 经过各 ...
- Django 简单教程(入门级)
一.Django简介 1. web框架介绍 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要 ...
- oracle 查询当前正在执行的事务
SELECT s.sid, s.serial#, s.event, a.sql_text, a.sql_fulltext, s.username, s.status, s.machine, s.ter ...
- 阿里云Quick BI——让人人都成为分析师
在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. Quic ...
- 设置OWA访问HTTP到HTTPS的重定向
需求:公司要求使用Http://mail.ever.com的方式来统一访问邮箱,所以需要进行相关的设置,将访问需求重定向到https://extest.ever.com/owa 首先在DNS里的eve ...
- 25个最佳的SSH命令
参考文献地址(SSH原理与运用(一):远程登录): http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 参考文献地址(SSH原理与 ...