我遇到需要覆盖父方法但只有一行的情况。我的初始代码非常大,所以我在一个例子中澄清了我的意思。 我有来自父母的方法:
class parent():
def method(self):
bla
bla
print("Parent method is working")
bla
bla
孩子:
class child(parent):
def method(self):
bla
bla
print("Child method working")
bla
bla
如您所见,两种方法几乎相同,但一条线不同。我是否必须在子方法中编写相同的代码才能打印不同的输出,或者python中有黑暗魔法如何只覆盖一行?
答案 0 :(得分:6)
您可以引入一个在子项中覆盖的辅助方法。
class parent(object):
def method(self):
blah
self.helper()
blah
def helper(self):
print("parent running")
class child(parent):
def helper(self):
print("child running")
答案 1 :(得分:4)
这不是一种神奇的方法,你必须重写整个方法。
现在,当然,有各种解决方法。如果您可以编辑父级,则可以:
在您的情况下,方法#1看起来像:
class Parent(object):
def method(self):
print("Before!")
self.inner()
print("After!")
def inner(self):
print "In the parent"
孩子:
class Child(Parent):
def inner(self):
print("In the child")