は、私は次のクラスを与えられたと仮定しますPythonで関数連鎖を行うとき、 "現在の"オブジェクトを参照する方法はありますか?
class foo(object):
def __init__(self, int):
self.count = int
def increment(self, int):
return foo(int + 1)
def decrement(self, int):
return foo(int - 1)
私の目標は、関数が変数に各オブジェクトを割り当てることなく、私が欲しいの結果に到達するために呼び出すチェーンに一緒です。例えば、私は私がこれを行うことができます知っている:
obj = foo(0)
obj = obj.increment(obj.count)
obj = obj.decrement(obj.count)
obj = obj.increment(obj.count)
obj = obj.decrement(obj.count)
print obj.count
0
を私はこれを行うにできるようにしたいと思います:
finalcount = obj(0).increment(?.count).decrement(?.count)
を私がで置くことができる何かがあるかどうかはわかりませんそのオブジェクトに名前が割り当てられていないため、メソッドが呼び出されているオブジェクトを参照するための場所は?
です。
各メソッドの最後にちょうど 'return self '。フレーズ* "流暢なインターフェイス" *あなたの研究に役立つかもしれません。 – jonrsharpe
@jonrsharpeさて、OPの例では、新しいインスタンスが作成されてもうまくいきません。 – wim
このクラスのメソッドのどれも、インスタンス変数で実際に何もしません。 'increment'と' decrement'は、 'self.count'を増やすのではなく、何を増やすのかを議論することになっていますか?そして、あなたは彼らが 'self'を修正する(そしておそらく戻す)新しいオブジェクトインスタンスを作成しているはずですか? – user2357112