设为首页 加入收藏

TOP

Python面向对象的继承
2015-04-07 15:29:19 来源: 作者: 【 】 浏览:31
Tags:Python 面向 对象 继承

Python面向对象的继承,继承主要就是继承父类的一些方法,代码中很详细


#!/usr/bin/env python
#coding:utf-8



class Father(object):#新式类
? ? def __init__(self):
? ? ? ? self.name='Liu'
? ? ? ? self.FamilyName='Yan'
? ? ? ?
? ? def Lee(self):
? ? ? ? print '我是父类函数Lee'
? ?
? ? def Allen(self):
? ? ? ? print "我是父类函数Allen"
? ? ? ?
class Son(Father):
? ? def __init__(self):
? ? ? ? #Father.__init__(self)? #经典类执行父类构造函数
? ? ? ? super(Son,self).__init__()? #新式类执行父类构造函数
? ? ? ? self.name='Feng'
? ? ? ?
? ? def Aswill(self): #子类新增函数
? ? ? ? print 'Son.Bar'
? ?
? ? def Lee(self):#重写父类函数Lee
? ? ? ? print '子类重写了父类函数Lee'
? ?
s1=Son()
print "继承了父类的姓"+ s1.FamilyName
print "重写了父类的名字",s1.name
s1.Lee() #子类重写了父类函数Lee
s1.Allen() #子类继承了父类函数Allen


继承多个类时的顺序,经典类继承是深度优先,是一个BUG, 新式类是广度优先,应该是用新式类去定义类


新式类


class A(object): #新式类的写法
? ? def __init__(self):
? ? ? ? print 'This is from A'
? ?
? ? def test(self):
? ? ? ? print 'This is test from A'


class B(A):
? ? def __init__(self):
? ? ? ? print "This is from B"
? ? ? ?


class C(A):
? ? def __init__(self):
? ? ? ? print "This is from C"
? ?
? ? def test(self):
? ? ? ? print "This is test from C"
? ? ? ?
? ? ? ?
class D(B,C):
? ? def __init__(self):
? ? ? ? print 'this is D'
? ? ? ?
T1=D()
T1.test()


经典类


class A:
? ? def __init__(self):
? ? ? ? print 'This is from A'
? ?
? ? def test(self):
? ? ? ? print 'This is test from A'


class B(A):
? ? def __init__(self):
? ? ? ? print "This is from B"
? ? ? ?


class C(A):
? ? def __init__(self):
? ? ? ? print "This is from C"
? ?
? ? def test(self):
? ? ? ? print "This is test from C"
? ? ? ?
? ? ? ?
class D(B,C):
? ? def __init__(self):
? ? ? ? print 'this is D'
? ? ? ?
T1=D()
T1.test()


--------------------------------------分割线 --------------------------------------


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python中的接口 下一篇Python中的装饰器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: