请看这个简单的示例:
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中,每个东西都是一个对象。那么在我的示例中,是否存在具有不同参数但只有一个代码副本的两个函数实例?
object
或它的一个子类。 - aaronasterlingprint
语句。 - aaronasterling