Python类成员变量初始化?

时间:2017-07-11 10:56:03

标签: python class

遇到一个Python类,我发现很难理解它的工作方式和原因。该类的简化示例是:

self.otherVar

我怀疑是self.__dict__来电不会引发错误而otherVar未显示对{{1}}

的引用

2 个答案:

答案 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__,但会显示所有类属性。 玩一点,随着时间的推移,你会习惯它。类属性可能很棘手,但非常有用。