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
是如何传递到 function f
的。
谁能给我解释一下,谢谢。
回答1
x
是一个 class 对象,当您执行 x.attr_val()
时,它会自动获取自身并将其作为第一个参数提供给 function(通常像这样的参数被命名为 self
)。
回答2
attr_val
是所谓的实例方法。当您的 Foo
class 调用它时,它会自动将对象作为第一个参数传递,有效地运行: 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