python - 有人可以解释 x 如何传递到 function 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 是如何传递到 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

相似文章

go - golang 如何从字符串中查找表情符号?

我想查找表情符号是否存在并替换为字符串(HTMLunicode)。(符文到字符串)例如,这是句子“我喜欢你哈哈哈😀你好。”这就是结果。“我喜欢你哈哈哈😀你好。”表情符号和表情符号位置是随机的。我将...

php - 挣扎于数组 php 中的索引

从rapidapi获取json数据并尝试将其放入canvasjs图表中。我相信为什么我的图表不打印的问题是因为我创建的数组没有正确的索引。我的数组在所需的每个元素上都有索引0,它的索引为0-13。<!...

随机推荐

最新文章