所以我需要在对象初始化时根据输入改变一个方法__init__
(对于那些感兴趣的人,我正在navigate_to
根据正在实例化的自动化器类型(Selenium、移动设备自动化器等)更改测试框架中的方法)。我想出了一个使用有条件地创建闭包的解决方案__init__
,但似乎应该有一种更优雅和优化的方法来做到这一点。作为该方法的示例:
class Foo(object):
def __init__(self, x):
self.x = x
if x % 2:
def odd_or_even():
return '%d odd' % self.x
else:
def odd_or_even():
return '%d even' % self.x
self.odd_or_even = odd_or_even
导致:
>>> foo1 = Foo(1)
>>> foo2 = Foo(2)
>>> foo1.odd_or_even()
'1 odd'
>>> foo2.odd_or_even()
'2 even'
这行得通,但我觉得应该有一些更好的方法来做到这一点。建议?