请看简单的例子:
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中的这种方法是否在内存中只有一个副本?我的意思是任何方法的代码都只有一个副本,在我的示例中,该方法本身不会被克隆。我认为它应该只有一个副本,但在这里我仍然提出这个问题以获得更多输入。
我记得 Python 中的一切都是对象。那么在我的示例中,是否有两个具有不同参数但只有一份代码副本的函数实例?