Python 具有相似主体的重写方法
我有两个班:一班和二班Python 具有相似主体的重写方法,python,inheritance,overriding,Python,Inheritance,Overriding,我有两个班:一班和二班 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):
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)
One和Two的foo方法非常相似,我觉得我是在复制粘贴代码。
我知道我可以在其中有一个单独的foo2方法来执行共享代码并为不同的值向foo添加参数,但我想知道是否有更好的方法来做到这一点。要从超类扩展方法,可以使用super
请注意,这不会保留调用方法的顺序。因此,如果顺序很重要,那么您必须重写整个foo方法。要从超类扩展方法,可以使用super
请注意,这不会保留调用方法的顺序。因此,如果这个顺序很重要,你必须重写整个foo方法。a、b和c是其他类的实例吗?是的,它们是。a、 在第一类和第二类中,b、c是相同类型的类。a、b和c是其他类的实例吗?是的,它们是。a、 b,c在一级和二级中都是相同类型的类。
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()