需要在python的属性访问和它的dir()之间进行澄清

时间:2012-11-22 15:16:01

标签: python attributes magic-methods

我几乎没有困惑;你可以在图片中看到..我创建了一个类,然后在这个类上应用dir()来检查这个类定义了哪些名称。
然后访问该类的属性;特别是以'__'开头的那些,我看到的是一个巨大的属性列表;其中大多数都不在dir()列表中;
所以我的第一个问题是它们来自哪里? enter image description here

下面是我发表此问题的观察结果。就像
一样 “”” dir(object1)为我们提供了一系列属性;可以在object2之后object1(此为.的实例)访问object2object2(如果object1可以成为object2)的实例(以及为example 1定义的其他属性)“”“是这样的??????
让我们检查..(我正在使用ipython的qtconsole)

typetype就是其中的一个例子。所以我们先检查dir(type)。您可以在快照中看到列表,如下所示; .的列表,然后通过在__上放置line 55来获取其属性的下一个输出,(对于那些以mro开头的那些),那么这里是一个列表(参见{{ 1}});

enter image description here

然后是所有的再生(只有一个dir(type));结合两者后;与example 2相同 enter image description here

line 59:让我们创建自己的类

enter image description heretestClass; (即在__的实例上)允许首先访问以line 59开头的内容,然后访问其他内容:enter image description here 最后将dir(testClass)的这两个结果与example 3相同。对??就在那时;让我们看另一个例子

line 64enter image description hereenter image description here  并且类似地组合line 54的结果并将其与示例1的{{1}}进行比较。
这就是我的意思。我的观察;这是正确的吗????我要求python大师对此观察发表任何专家评论。

1 个答案:

答案 0 :(得分:2)

dir()显示对象本身的内容,但使用.运算符,您还可以访问对象的类型属性。看看dir(type(testClass)),你会找到你遗失的那些。