我在python中有两个类,第三个继承自前两个类:
class A():
def __init__(var1, var2):
self.var1 = var1
self.var2 = var2
def MyFunc():
#do stuff
class B():
def __init__(var1):
self.var1 = var1
def MyFunc():
#do other stuff
class C(A,B):
def __init__(self, var1, var2, var3)
A.__init__(self,var1, var2)
B.__init__(self, var3)
您可能会注意到这两个类具有相同名称的不同功能。执行以下操作:
>>> classC = C(1,2,3)
>>> classC.MyFunc()
似乎工作但我想确定我正在调用哪个MyFunc
函数。如何控制调用子类中的哪个函数?
答案 0 :(得分:5)
使用C
的方法解析顺序搜索C
未定义的属性:
>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
由于未定义C.MyFunc
,classC.MyFunc
会解析为A.MyFunc
。永远不会调用B.MyFunc
,除非A.MyFunc
由于某种原因明确地调用它。