Wie unterscheidet Python die Rückruffunktion, die Mitglied einer Klasse ist?

Bitte schauen Sie sich das einfache Beispiel an:

<code>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()
</code>

Das Ergebnis ist:

<code>1
2
</code>

Es läuft wie erwartet. Aber ich habe eine Frage. In C wird die Rückruffunktion als Zeiger übergeben. In Python sollte dies auf ähnliche Weise erfolgen, damit der Aufrufer die Adresse der Funktion kennt. In meinem Beispiel wird jedoch nicht nur der Funktionszeiger übergeben, sondern auch der Parameter (self), da dieselbe Methode derselben Klasse unterschiedliche Ergebnisse ausgibt. Meine Fragen sind also:

Hat eine solche Methode in Python nur eine Kopie im Speicher? Meine Bedeutung ist, dass der Code einer Methode nur eine Kopie hat und in meinem Beispiel die Methode nicht selbst geklont wird. Ich denke, es sollte nur eine Kopie geben, aber hier stelle ich diese Frage, um mehr Eingaben zu erhalten.

Ich erinnere mich, dass alles in Python ein Objekt ist. Gibt es in meinem Beispiel also zwei Funktionsinstanzen mit unterschiedlichen Parametern, aber nur eine Kopie des Codes?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage