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()
--------------------------------------分割线 --------------------------------------