#python中的多继承,钻石继承
#查找属性的过程:简单版本 , 详细过程可以参考python参考手册
#旧式类中,从左到右,从B->A ,然后继续从C->A
#新式类中,从左到右,先B , 然后C ,C 后面没有其他类了,继续从B的父类开始,等B父类搜索完,搜索C的父类
#其中的原因简单解释下 ,低层的类较高层的类相比,或许低层类中的属性是用户更想要的
#解决多继承中的冲突,2种方式,简单的方式就是明确的定义 ,比如在类中新增一个属性 attr = SuperClass.attr
class A:
attr = 1
def method(self):
print( "函数*:%s"%(self.method.__func__))
class B(A):
pass
class C(A):
attr = 2
def method(self):
print("函数*:%s" % (self.method.__func__))
class D(B,C):
pass
#想要解决冲突的一个简单办法:
#attr = B.attr
#函数(方法)也可以这样使用
#method = A.method
#一种更通用的方式:
#def method(self): A.method(self)
x = D()
x.method()
python中的多继承,钻石继承,搜索过程
最新推荐文章于 2023-06-29 15:37:29 发布