共享共同父类的一组类的初始化过程可以分为三部分:公共部分1,类特定部分,公共部分2。目前,前两个部分是从各子类的__init__函数调用,但第二公共部分必须单独 打了个比方:如何在继承的Python类中执行常见的后期初始化任务?
class BaseClass:
def __init__(self):
print 'base __init__'
self.common1()
def common1(self):
print 'common 1'
def finalizeInitialization(self):
print 'finalizeInitialization [common2]'
class Subclass1(BaseClass):
def __init__(self):
BaseClass.__init__(self)
self.specific()
def specific(self):
print 'specific'
if __name__ == '__main__':
s = Subclass1() #Don't forget to finalize the initialization
s.finalizeInitialization() # now the object is fully initialized
有没有办法不具有调用finalizeInitialization() ?
编辑可以将调用finalizeInitialization()转移到Subclass1的__init__中(如S.Lott's answer)。这使得生活更轻松,但仍需要记住完成初始化,这次是在“构造函数”中。无论哪种方式,都无法执行完整的初始化,这正是我正在寻找的。
谢谢,但请参阅我的编辑进行澄清 – 2009-04-27 20:59:54