k
に割り当てるnew.add
の値は関数です。 Python 2では、それは特別な "unbound method"オブジェクトでしたが、あなたの出力には、Python 3を使用していることが示唆されています(概念的な点を除いて、任意の関数と同様に
、あなたはself
、one
とtwo
のために適切なものは何でも値渡し、あなたがしたい場合k
を呼び出すことができます。たとえば、k("foo", 1, 2)
(これは3
を返します)。
伝統的には、引数はnew
クラスのインスタンスでなければなりませんが、Python 3では何も実行されません(このチェックはPython 2のアンバウンドメソッドオブジェクトの目的でした)。したがって、上記の例の文字列を渡すとうまくいきました。self
は関数本体では何も使用されていないためです。 (より複雑なメソッドは、通常、不適切な引数をself
として渡すと失敗します)。
メソッドを呼び出す一般的な方法は、まずクラスのインスタンスを作成し、そのインスタンスでメソッドを呼び出す方法です。これは、インスタンスが自動的に最初の引数として渡される:CPythonので
x = new()
x.add(1, 2) # returns 3, x got passed as self
はい。私はPython 3を使用しています –