我想根据构造函数参数更改实现。下面是一个例子,说明我的意思:
class Device(object):
def __init__(self, simulate):
self.simulate = simulate
def foo(self):
if simulate:
self._simulate_foo()
else:
self._do_foo()
def _do_foo(self):
# do foo
def _simulate_foo(self):
# simulate foo
现在每次调用都会foo()
调用一个if
子句。为避免这种情况,我可以将正确的方法动态绑定到foo
.
class Device(object):
def __init__(self, simulate):
if simulate:
self.foo = self._simulate_foo
else:
self.foo = self._do_foo()
def _do_foo(self):
# do foo
def _simulate_foo(self):
# simulate foo
是否有任何不应该这样做的缺点或我不知道的其他缺点?这真的更快吗?(我知道继承是另一种选择)