[英]subclasses with functions having the same name in python
I have two classes in python, and a third which inherits from the first two: 我在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)
As you might notice both classes have different functions bearing the same name. 您可能会注意到,这两个类具有相同名称的不同功能。 Doing the following:
执行以下操作:
>>> classC = C(1,2,3)
>>> classC.MyFunc()
Appears to work but I would like to be sure of which MyFunc
function I am calling. 似乎可以工作,但是我想确定我正在调用哪个
MyFunc
函数。 How do I control which function from my subclasses is being called? 如何控制子类中的哪个函数被调用?
Attributes not defined by C
are searched for using C
's method resolution order: 使用
C
的方法解析顺序搜索未由C
定义的属性:
>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
Since C.MyFunc
isn't defined, classC.MyFunc
resolves to A.MyFunc
. 由于
C.MyFunc
,因此classC.MyFunc
解析为A.MyFunc
。 B.MyFunc
is never called, unless A.MyFunc
were to call it explicitly for some reason. B.MyFunc
不会被调用,除非A.MyFunc
是显式调用它的某些原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.