这是我想念几种语言的功能,并想知道是否有人有任何想法如何在Python中完成。从基类__init__的子类__init__调用基类方法?
的想法是,我有一个基类:
class Base(object):
def __init__(self):
self.my_data = 0
def my_rebind_function(self):
pass
和派生类:
class Child(Base):
def __init__(self):
super().__init__(self)
# Do some stuff here
self.my_rebind_function() # <==== This is the line I want to get rid of
def my_rebind_function(self):
# Do stuff with self.my_data
正如从上面可以看出,我有欲称为后反弹功能Child.__init__
已经完成了它的工作。我希望对所有继承的类都完成这个工作,所以如果它是由基类执行的话,那将非常好,所以我不必在每个子类中重新输入那一行。
如果语言有一个功能类似__finally__
,操作类似,它如何与例外操作这将是很好。也就是说,它应该在所有派生类的函数全部运行之后运行,这很好。所以通话顺序如下:
Base1.__init__()
...
BaseN.__init__()
LeafChild.__init__()
LeafChild.__finally__()
BaseN.__finally__()
...
Base1.__finally__()
然后对象构造完成。这也是一种类似于setup
,run
和teardown
功能单元测试。
要覆盖在少儿班这种方法吗? – PRMoureu
不,我希望在调用所有孩子的__init __-函数后调用另一个函数。 – Robert
你可以用元类来实现,albiet更复杂:\ – direprobs