最近在给孩子编写一款小游戏的时候发现了一个 问题,某些子类调用父类属性时会报错,提示未找到该属性。当时我很纳闷,就在网上搜索一些相关资料发现这方面的资料很少。所以今天就写下来 希望能帮到有需要的朋友。
ok,我们先随便写上几个类
class A():
def __init__(self):
self.aa = 11
class B():
def __init__(self):
self.bb = 22
class C(A,B):
def __init__(self):
self.cc = 33
c = C()
print(c.aa, c.bb, c.cc)
运行以后得到的提示为
Traceback (most recent call last):
File "/Users/yansong/Desktop/fjdz-new/test.py", line 17, in
print(c.aa, c.bb, c.cc)
AttributeError: 'C' object has no attribute 'bb'
Process finished with exit code 1
这里提示没有bb这个属性,到这里我非常纳闷,明明已经继承了啊。
于是我去研究了一下python的继承逻辑。Python使用MRO(method resolution order方法解析顺序)解决基类搜索顺序问题。这里参考了https://blog.csdn.net/u013008795/article/details/90412084这篇文章
C3算法