这是我在几种编程语言中都想要的一个功能,我想知道是否有人知道如何在Python中实现。
我的想法是,我有一个基类:
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__
这样的函数,它的操作方式类似于异常处理,那将是很好的。也就是说,它应该在所有派生类的__init__
函数运行后运行,这将非常棒。因此,调用顺序应该类似于:
Base1.__init__()
...
BaseN.__init__()
LeafChild.__init__()
LeafChild.__finally__()
BaseN.__finally__()
...
Base1.__finally__()
接下来,对象的构建工作已经完成。这有点类似于使用setup
、run
和teardown
函数进行单元测试。
self.my_rebind_function()
放在基类__init__()
中,当派生类的__init__()
调用它时,它将调用派生类版本的my_rebind_function()
。 - martineau__init__
方法之后被调用。 - Robert