遇到一个Python类,我发现很难理解它的工作方式和原因。该类的简化示例是:
self.otherVar
我怀疑是self.__dict__
来电不会引发错误而otherVar
未显示对{{1}}
答案 0 :(得分:1)
otherVar
是一个类成员,而不是实例成员,这就是它在__dict__
中没有显示的原因。
它出现在self.__class__.__dict__
中。 (这种方式在Python 2.x中不起作用)
顺便说一下,otherVar
成员值在所有实例之间共享,也可以从type
对象访问:Test.otherVar
此处示例:https://trinket.io/python3/d245351e58
要获得更深入的解释,请查看here
答案 1 :(得分:1)
这是因为vao@vao-X102BA:~$ psql -c "copy s1(\"desc\") from stdin;"
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> b
>> \.
COPY 1
vao@vao-X102BA:~$ psql
psql (9.6.3)
Type "help" for help.
vao=# select * from s1;
i | desc
---+------
| a
| b
(2 rows)
是otherVar
的属性,而您在class
中设置的var
是该实例的属性。
__init__
对于实例是可见的,因为python首先尝试获取实例属性值,如果实例没有它,则它会检查其类属性。如果您在两者中使用不同的值定义otherVar
,事情可能会让您感到困惑。
嗯,你知道比较一个类就像一个蓝图而实例是跟在它之后构建的对象,对吗?因此,var
是您在创建实例时添加的额外内容。
如果您想查看var
,请执行otherVar
。它不会向您显示Test.__dict__
,但会显示所有类属性。
玩一点,随着时间的推移,你会习惯它。类属性可能很棘手,但非常有用。