W jaki sposób Python odróżnia funkcję wywołania zwrotnego, która jest członkiem klasy?

Proszę spojrzeć na prosty przykład:

<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>

Wynik to:

<code>1
2
</code>

Działa zgodnie z oczekiwaniami. Ale mam pytanie. W języku C funkcja zwrotna jest przekazywana jako wskaźnik. W Pythonie powinien to zrobić w podobny sposób, aby dzwoniący znał adres funkcji. Ale w moim przykładzie przekazywany jest nie tylko wskaźnik funkcji, ale także parametr (self), ponieważ ta sama metoda tej samej klasy drukuje różne wyniki. Moje pytania to:

Czy taka metoda w Pythonie ma tylko jedną kopię w pamięci? Mam na myśli to, że kod dowolnej metody ma tylko jedną kopię, aw moim przykładzie metoda nie zostanie sklonowana sama. Myślę, że powinien mieć tylko jedną kopię, ale tutaj nadal stawiam to pytanie, aby uzyskać więcej danych.

Pamiętam, że wszystko w Pythonie jest obiektem. Czy w moim przykładzie istnieją dwie instancje funkcji o różnych parametrach, ale tylko jedna kopia kodu?

questionAnswers(2)

yourAnswerToTheQuestion