什么是钻石继承呢?举个例子,其中A是顶级父类,B1和B2是次父类 ,C是继承了B1和B2。掌握了这些对于后面刷题,可以更好的理解super.()函数方法。
class A:
def __init__(self):
print("我是A")
class B1(A):
def __init__(self):
A.__init__(self)
print("我是B1")
class B2(A):
def __init__(self):
A.__init__(self)
print("我是B2")
class C(B1,B2):
def __init__(self):
B1.__init__(self)
B2.__init__(self)
print("我是C")
c=C()
其中A是顶级父类,B1和B2是次父类 ,C是继承了B1和B2。
其输出的结果:
我是A
我是B1
我是A
我是B2
我是C
上一个的输出结果里面有一个A是重复使用了,为了解决这个问题,就可以使用super()函数,自动向上搜索父类的方法,这样就可以在实例化C的时候,向上搜索父类的话就会避免掉将重复的父类.__init__()方法执行出来。super()函数的用途之一就是向上搜索指定的某个父类方法。然后就可以扩展到任意的方法了。
class A:
def __init__(self):
print("我是A")
class B1(A):
def __init__(self):
super().__init__()#向上搜索父类
print("我是B1")
class B2(A):
def __init__(self):
super().__init__()
print("我是B2")
class C(B1,B2):
def __init__(self):
super().__init__()
print("我是C")
c=C()
运行结果为:
我是A
我是B2
我是B1
我是C
为了方便大家的理解,我将继续用上的里给大家讲解。
class A:
def hello(self):
print("我是A")
class B1(A):
def hello(self):
super().hello()
print("我是B1")
class B2(A):
def helolo(self):
super().hello()
print("我是B2")
class C(B1,B2):
def __init__(self):
super().hello()
print("我是C")
c=C()
输出结果仍然是:
我是A
我是B1
我是C
我的分享到此结束,谢谢我的记录对你的学习会有帮助。