這是我想念幾種語言的功能,並想知道是否有人有任何想法如何在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