Osm Asked:2023-09-13 19:40:36 +0000 UTC2023-09-13 19:40:36 +0000 UTC 2023-09-13 19:40:36 +0000 UTC 函数名后面带点的变量名是什么意思? 772 在搜索有关装饰器的信息时,我发现可以编写以下文本(与装饰器没有直接关系): def func(): return func.s func.s=1 print(func()) 并最终得到 1。 这个条目是什么意思func.s?这个变量是什么?如果您尝试写入func2.s(即只是带点的名称),则会出现语法错误。 python 2 个回答 Voted Osm 2023-09-13T20:14:49Z2023-09-13T20:14:49Z 谢谢大家,我明白了函数属性是这样写的。 Best Answer CrazyElf 2023-09-14T00:00:07Z2023-09-14T00:00:07Z 在 Python 中,几乎所有实体都是成熟的类。包括函数,甚至只是数字(并非每种语言都会发生这种情况)。 def func(): return func print(type(func)) print(type(func).__bases__) 结论: <class 'function'> (<class 'object'>,) 也就是说,它是从一个类(所有 Python 类都继承自该类)继承func的类的对象。functionobject 类及其实例具有属性。 func.s = 1 print(func.__dict__) 结论: {'s': 1} 也就是说,这只是设置类实例属性的选项之一。不是最好的。不过,最好明确地设置属性: setattr(func, 'x', 1) 因此,例如,您可以设置名称由某个变量指定的属性。 x = 'тест' setattr(func, x, 1)
谢谢大家,我明白了函数属性是这样写的。
在 Python 中,几乎所有实体都是成熟的类。包括函数,甚至只是数字(并非每种语言都会发生这种情况)。
结论:
也就是说,它是从一个类(所有 Python 类都继承自该类)继承
func的类的对象。functionobject类及其实例具有属性。
结论:
也就是说,这只是设置类实例属性的选项之一。不是最好的。不过,最好明确地设置属性:
因此,例如,您可以设置名称由某个变量指定的属性。