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()