有人能解释一下x是如何传递到函数f的吗


def f(obj):
print('attr =', obj.attr)
class Foo:
attr = 100
attr_val = f
x = Foo()
print(x.attr)
x.attr_val()

输出:

100
attr = 100

我从真正的python中得到了这段代码,但我不明白x是如何传递到函数f中的。

有人能向我解释一下吗,谢谢。

x是一个类对象,当您执行x.attr_val()时,它会自动将自己作为函数的第一个参数(像这样的参数通常命名为self)。

attr_val就是所谓的实例方法。当Foo类调用它时,它会自动将对象作为第一个参数传递,有效地运行:f(x)

如果使用自定义__init__方法,标准做法是传递self变量来指示此自引用。

因此,一个更详细的变体是:

def f(obj):
print('attr =', obj.attr)
class Foo:
def __init__(self):
self.attr = 100
def attr_val(self):
f(self) # or "return f(self)"
x = Foo()
x.attr_val()
# attr = 100

最新更新