我只是在乞求学习python (来自C);对于属于类的变量的定义方式,我感到非常困惑(不管是“类类型”还是“实例类型”,我的问题更基本)。到目前为止,我已经对以下代码行进行了实验:
class A:
pass
A.a = 1
A.b = 2
print(A.a+A.b)
这段代码出人意料地返回了"3“(虽然我预期会出现错误),这将导致我来到这里。我不明白为什么解释器能够插入属于"A“类的变量(我从未定义过)。
发布于 2019-07-31 03:40:57
从C的角度来看,假设Python属性存储在哈希表中,因此可以在运行时动态地修改和查询。
考虑到这一点:
class A:
pass
print(A.__dict__)
{'__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
当您像以前一样修改A
时,您正在修改它的 member。
A.a = 1
print(A.__dict__)
{'__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None, 'a': 1}
注意它现在是如何包含a
的
print(A.__dict__['a'])
1
https://stackoverflow.com/questions/57289792
复制