そのため、入力に基づいてオブジェクトの初期化時にメソッドを変更する必要があります__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'
これは機能しますが、これを行うためのより良い方法があるはずだと感じています。提案?