これは期待通りに機能しますが、私はこのアプローチについて何らかの形で不確実です。それは安全ですか?それはpythonicですか?メソッドをプレーン関数で置き換えることはできますか?
class Example:
def __init__(self, parameter):
if parameter == 0:
# trivial case, the result is always zero
self.calc = lambda x: 0.0 # <== replacing a method
self._parameter = parameter
def calc(self, x):
# ... long calculation of result ...
return result
(Python2とのpython3の間に違いがあれば、私は唯一のpython3を使用しています。)
読み取り、デバッグする、すなわち困難醜いですが、それは動作します。 – zvone
ちょっといいのは 'x:self.calc = self._calc else:self.calc = lambda ...'のようなものです。 – zvone
これは特別な方法( '__xxx__')でない限り安全です個々のインスタンスではなく、オブジェクト(そのクラス)のタイプに基づいて常に検索されます。非常にPythonicではないので、適度に使用してください。 – martineau