を呼び出す:私はそのクラスのCクラスの定義といくつかの内部クラス定義を持っている別のクラス内のクラスを定義し、親メソッド
class DoXJob():
def __init__(self, param1, param2):
<choose an inner class to use>
def DoIt(self):
pass
def Finalize(self):
<do finalization>
class DoXInSomeWay():
def __init__(self):
....
....
def DoIt(self):
...
class DoXInSomeOtherWay():
def __init__(self):
....
....
def DoIt(self):
...
ロジックはシンプルですが、私は仕事を処理するために、いくつかの内部クラス定義を持っています、私は、W、全てが微細である
obj = DoXJob(param1, param2)
obj.DoIt()
、それは次に内部クラスが使用される決定し、選択された内部クラスメソッド(
DoXInSomeOtherWay.DoIt
又は
DoXInWay.DoIt
)の方法で
DoXJob.DoIt
メソッドをオーバーライドするいくつかのパラメータと
DoXJob
を呼び出します私が欲しいのは、または
DoXInWay.DoIt
から呼び出すような、ineerクラスの
DoXJob.Finalize
をトリガーすることです。しかし、私はこれをどのように処理するか、それが正しいかどうかはわかりません。
obj = DoXJob(param1, param2)
obj.DoIt()
obj.Finalize()
インナーを削除して、サブクラスを作成し、異なる方法を上書きしないのはなぜですか? – DonCallisto
代わりに、あなたがしようとしていると思われるもの、つまり戦略パターンに、従来のアプローチをとることができます。 –
@DonCallistoサブクラス化と継承の使用が必要なことはあまりありません。また、内部クラスは基本クラス内でのみ使用されるため、サブクラス化ではなくこのパターンに従うと、より論理的に思えます。 – FallenAngel