所以我知道在python中,所有东西都是一个“对象”,这意味着它可以作为参数传递给一个方法。但我想弄明白这到底是怎么回事。所以我尝试了下面的例子:
class A:
def __init__(self):
self.value = 'a'
def my_method(self)
print self.value
class B:
def __init__(self):
self.values = 'b'
def my_method(self, method):
method()
a = A()
b = B()
b.my_method(a.my_method)首先,写这篇文章只是为了看看它是如何工作的。例如,我知道我应该检查my_method的参数是否是可调用的。
这里的方法到底是如何传递的呢?我的意思是,我收到的输出是'a‘,所以我猜,当一个对象方法作为参数传递时,实际的对象也是这样吗?在这种情况下,当我传递a.my_method时,实例a也被传递了吗?
发布于 2011-08-18 20:42:31
这里传递的方法到底是怎么回事?
这很容易回答:在Python中,一切都是对象:)也是函数/方法,它们是特定的函数对象,可以作为参数传递。
在这种情况下,当我传递a.my_method时,实例a也被传递了吗?
是的,在这种情况下,也会传递实例a,尽管它嵌入在function对象中并且无法检索。相反,您可以传递函数本身并为其提供一个实例。考虑以下示例:
b = B()
func = A.my_method # Attention, UPPERCASE A
func(b)这将使用B的实例调用A类方法my_method。
https://stackoverflow.com/questions/7107510
复制相似问题