gpt4 book ai didi

python - python 中通过 self 暴露的类级别变量

转载 作者:行者123 更新时间:2023-11-30 23:31:33 25 4
gpt4 key购买 nike

class ClassA:
A = 10
def __init__(self):
self.a = 10
self.b = 20

def methodA(self):
return self.A

obj = ClassA()
print(obj.methodA()) # returns 10

这显然有限制,其中,I obj 将不具有名称为“A”的属性。但为什么 python 通过 self.A 公开“A”。将其返回为 ClassA.A 是否更好?

最佳答案

这完全是设计使然。

类上的方法也是类上的属性(尽管也通过 descriptors 进行了增强)。这也是 self.methodA() 的定位方式。

Python 首先在实例上搜索属性,然后是类,最后是类的基类。

请注意,设置 self.A 仍会在实例上设置值,从而屏蔽类属性。这允许类指定属性的默认值,稍后由实例上的值替换。

这一切并不妨碍您直接访问ClassA.A并绕过实例字典。如果您想更改共享值,则由于上述原因,您必须直接分配给ClassA.A

关于python - python 中通过 self 暴露的类级别变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com