クラス階層があるとしましょう。インスタンスに追加のパラメーターを提供することで、理論的には単一のクラスでその機能を維持できます。これが例です(非常に不自然ですが、シンプルにしたかったのです):
class Base:
def __init__(self, a):
self.a = a
def f(self, x):
raise NotImplemented # needs to be defined in subclass
class Mult(Base)
def f(self, x):
return self.a * x
class Add(Base):
def f(self, x):
return self.a + x
m = Mult(5)
a = Add(7)
m.f(10)
a.f(20)
上記のコードは、次のようにリファクタリングできます。
class Compute:
def __init__(self, a, func):
self.a = a
self.func = func
def f(self, x)
return self.func(self.a, x)
m = Compute(5, operator.mult)
a = Compute(7, operator.add)
このばかげた例では、違いがないことは理解しています。ですから、私の言いたいことを理解するため以外に考えないでください。
実生活で遭遇するさまざまな状況でこの選択を行う際に、どのような要因を考慮する必要があるか知りたいですか? つまり、クラスとパラメーター化されたインスタンスを使用することの長所/短所は何ですか?