【发布时间】:2020-09-20 00:17:02
【问题描述】:
我已经覆盖了子类中的一个方法。
该方法在父类构造函数中使用。
在子类中调用super().__init__ 时,会在父类的构造函数中执行子类的方法,而不是父类的方法。
例子:
class A:
def __init__(self):
self.method()
def method(self):
print('parent method!')
class B(A):
def __init__(self):
super().__init__()
def method(self):
print('child method!')
b = B()
输出:child method!
虽然我想得到parent method!
编辑:
我需要父类的构造函数来使用未覆盖的方法,但之后每次从父类调用method() 都应该调用覆盖的方法。
【问题讨论】:
-
AFAIK,当您在父子节点中都有类似的方法时,子方法将优先于子实例。你为什么不重命名其中之一?
-
因为我需要使用不覆盖的方法调用父级的构造函数,但是我每次都需要使用覆盖的构造函数。