我有一个名为A
的类,具有两个子类B
和C
。以下内容有意义吗?还是有更好的方法呢?
class A():
...
def do_stuff(self):
self.do_this()
self.do_that()
if isInstance(self, B):
self.do_the_b_stuff()
elif isInstance(self, C):
self.do_the_c_stuff()
答案 0 :(得分:6)
还有一种更好的方法:在子类中覆盖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
。如有必要,这使得添加其他子类变得更加容易。