假设我有一个类层次结构。通过为实例提供额外的参数,我理论上可以通过单个类来维护其功能。这是一个例子(超级做作,但我想保持简单):
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)
我知道对于这个愚蠢的例子,它没有任何区别。所以除了理解我的观点,请不要考虑它。
我想知道在为现实生活中遇到的各种情况做出选择时应该考虑哪些因素?换句话说,使用类与参数化实例的优缺点是什么?