一:
# 自动继承object类、所以Python3都是新式类
class A:
def add(self, x):
y = x + 1
print(y)
class B(A):
def add(self, x):
# python3 调用超类的方法
super().add(x)
b= B()
b.add(3)
二:
# Python2.x 记得继承 object
class A(object):
def add(self, x):
y = x+1
print(y)
class B(A):
def add(self, x):
# python2 调用超累的方法
super(B, self).add(x)
b = B()
b.add(2) # 3
三:
class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print('Parent')
def bar(self, message):
print("%s from Parent" % message)
class FooChild(FooParent):
def __init__(self):
# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),
# 然后把类 FooChild 的对象转换为类 FooParent 的对象
super(FooChild, self).__init__()
print('Child')
def bar(self, message):
super(FooChild, self).bar(message)
print('Child bar fuction')
print(self.parent)
if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
四|、MRO
"""
python3 的 method resolution order 、
1、广度优先
2、多继承在同一(层级)谁在前先继承谁
"""
class F:
pass
class E:
pass
class D:
pass
class B(D, E):
pass
class C(D, F):
pass
class A(B, C):
pass
print(A.__mro__)