私は生計のためにコンパイラを維持するのに使用されましたが、これは私を混乱させます。メソッドと結合されたインスタンス化の動作が不明確
クラスを作成してメソッドを与えると、インスタンスをインスタンス化して、同時に簡単なメソッドを実行できるはずです。ここでは、彼らは同じことを行うなく行う必要がありますように見える2つの方法があります。
class foo(object) :
def __init__(self, val) :
self.val = val
def set_new(self, new) :
self.val = new
a = foo(2).set_new(3)
print a
>>> None
a = foo(2)
s.set_new(3)
>>> ..instance at ox7fe2...
が、私はそれを設計していた、それはオブジェクトを作成し、コンストラクタを使用する主な行動だとして、コールa = foo(2).set_new(3)
が持っているでしょうが。 .set_new()
は補助的な作業です。
メソッドが 'self'を返す場合はすべて正常であるように見えますが、それはスタンドアロン(成功コードなど)と呼ばれるときにメソッドが独自の有用な結果を返すことができないことを意味します。 。
おそらく、set_new()
の内部では、それが 'ネスト'または '連鎖'コールであることを知るいくつかの方法がありますが、それでもコールバックからの戻り値は矛盾します。
戻り値は 'a'に割り当てられるべきもの... ...?あなたは 'a =(foo(2).set_new(3))'または '(a = foo(2)).set_new(3)'と解釈します。後者を期待しているようですが、私はそのような連鎖方法を解釈する言葉がないことを知っています。 – deceze
私が嫌いな理由の1つに '。' OO言語でメソッドを呼び出す方法。 – eSurfsnake