Есть лучший способ сделать это: переопределить do_stuff
в дочерних классах.
class A:
def do_stuff(self):
self.do_this()
self.do_that()
class B(A):
def do_stuff(self):
super().do_stuff() # call the parent implementation
self.do_the_b_stuff()
class C(A):
def do_stuff(self):
super().do_stuff() # call the parent implementation
self.do_the_c_stuff()
Преимущество этого решения в том, что базовый класс не должен знать о своих дочерних классах - B
и C
нигде не упоминаются в теле A
. Это облегчает добавление дополнительных подклассов, если это когда-либо понадобится.