我有两个班级:一班和二班
class One:
# self.a, self.b, self.c
# ...
def foo(self):
self.a.foo()
self.b.bar()
self.c.hmm(1,2,3)
class Two(One):
# super(Two, self).__init__()
# self.d
# ...
def foo(self):
self.a.foo()
self.b.bar()
self.d.wow()
self.c.hmm(4,5,6)
一个和两个的foo()
方法非常相似,以至于我好像在复制粘贴代码。
我知道我可以在其中一个单独的foo2()
方法中执行共享代码,并为不同的值向foo()
添加参数,但是我想知道是否有更好的方法可以做到这一点。 >
答案 0 :(得分:4)
要从超类扩展方法,可以使用super
。
class One:
...
def foo(self):
self.a.foo()
self.b.bar()
self.c.hmm(1,2,3)
class Two(One):
...
def foo(self):
super().foo()
self.d.wow()
注意,这不会保留调用方法的顺序。因此,如果顺序很重要,则必须重写整个foo
方法。