私はいくつかのプロジェクトを構築する方法をアドバイスしたいと思います。Pythonでの合成継承
私はいくつかの方法で基本クラスを取得しました。
class Base(object):
def method1(self):
# some code
def method2(self):
# some code
def method3(self):
# some code
... and some other methods
私のプロジェクトでは、基本クラスを変更することはできません。プロジェクト要件を適用するには、そのクラスに固有のものでなければなりません。
有効にするかどうかの要件がいくつかあります。与えられた構成に依存します。私。私はmethod1()、method2()、method3()、またはそれらの任意の組み合わせをオーバーライドできるようにしたいと思います。
1つの代替案は、いくつかの継承クラスを構築することです。
class Child1(Base):
def method1(self):
# some code
class Child2(Base):
def method2(self):
# some code
class Child3(Base):
def method3(self):
# some code
次に、複数の継承を使用してそれらの構成を適用することができます。しかし、このアプローチはすべての可能な組み合わせをカバーするためにはうまくいきません。(例えば、Child4()を使用するとどうなりますか?)
もう一つの方法は、単一の継承クラスを持ち、if
句を使用して、スーパーメソッドまたは派生した動作を適用します。
class Child(Base):
def method1(self):
if not self.override1:
# call super
else:
# some code
def method2(self):
if not self.override2:
# call super
else:
# some code
def method3(self):
if not self.override3:
# call super
else:
# some code
私はこの選択肢にもっと好意的ですが、これを行うためのより良いオブジェクト指向のアプローチが必要だと感じています。
ご意見やご提案はありますか?
どうもありがとう
PS:私は、2.7をPythonのように拘束しています、と私はコードを共有することを計画しているので、私はむしろ平均Pythonプログラマで理解しやすい(とだけでなく、高度であるソリューションを持っていますプログラマー)。
質問は、おそらくあまりにも広いです。変更の程度によってインスタンスが変更されていないインスタンスと大きく異なる振る舞いをする場合 - それは別のものと見なすことができるほど、最後の解決策は間違っていると言えます。多重継承/混合アプローチ。 – wwii