共通の親を共有するクラスのグループの初期化プロセスは、共通パート1、クラス固有パート、共通パート2の3つのパートに分けられます。現在、最初の2つの部分は、それぞれの子クラスの__init__関数から呼び出されるが、第2の共通の部分は、例えば、別々に 呼び出す必要がありますされています継承された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を(呼び出すために持っていない方法はあります) ?
EDIT finalizeInitialization()の呼び出しをSubclass1の__init__(S.Lott's answerのように)に転送できます。これは人生を楽にしますが、まだ "コンストラクタ"内で初期化を完了することを忘れてはいけません。いずれにしても、私が探している完全な初期化を強制する方法はありません。
ありがとうございます。訂正のため編集を参照してください –
私はバージョン2を採用しています。ありがとう –