类B
并C
从class继承A
。类D
从B
和继承C
:
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
A.__init__(self)
print('B')
class C(A):
def __init__(self):
A.__init__(self)
print('C')
class D(B, C):
def __init__(self):
B.__init__(self)
C.__init__(self)
print('D')
d = D()
这将输出:
A
B
A
C
D
有没有办法避免对构造函数的双重调用A
?
注意:在我的真实情况下,__init__
来自B
和的方法C
没有相同的签名,因此使用super()是不可行的(据我所知...)
干杯!
如果您知道A
将在多个基类中使用它,则可以让它自己检测双重初始化。
class A:
def __init__(self):
if hasattr(self, '_initialized'):
return
print('A')
self._initialized = true
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句