簡単な例を見てください。
class A:
def __init__(self, flag):
self.flag = flag
def func(self):
print self.flag
a = A(1)
b = A(2)
callback_a = a.func
callback_b = b.func
callback_a()
callback_b()
結果は次のとおりです。
1
2
期待どおりに動作します。しかし、私は質問があります。Cでは、コールバック関数がポインターとして渡されます。Pythonでは、これを行うための同様の方法が必要であるため、呼び出し元は関数のアドレスを知っています。しかし、私の例では、同じクラスの同じメソッドが異なる結果を出力するため、関数ポインターだけでなく、パラメーター(self)も渡されます。だから私の質問は:
Pythonのそのようなメソッドは、メモリに1つのコピーしかありませんか?私の意味は、どのメソッドのコードにもコピーが1つしかないということです。私の例では、メソッド自体は複製されません。コピーは1つだけでよいと思いますが、ここでは、より多くの入力を取得するために、この質問をします。
Pythonのすべてがオブジェクトであることを覚えています。したがって、私の例では、パラメーターが異なる2つの関数インスタンスがありますが、コードのコピーは1つだけですか?