我没有什么困惑;你可以在图片中看到..我创建了一个类,然后在该类上应用 dir() 来检查该类定义了哪些名称。
然后访问该类的属性;特别是那些以 '__
' 开头的,我看到的是一个巨大的属性列表;其中大多数不存在于 dir()
的列表中;
所以我的第一个问题是它们都来自哪里?
下面也是我的观察,我为此发布了这个问题。就像
”“”
dir(object1)
给我们一个属性列表;可以在 object2
(它是 object1
的一个实例)上以 .
的形式在 object2
之后进行访问(应用,如果 object2
可以成为 object1
的实例)(以及为 object2
定义的其他属性)"""
是这样吗??????
让我们检查一下..(我正在使用 ipython 的 qtconsole)
示例 1
:
type
是其自身的实例。所以我们首先检查类型
。您可以在快照中看到列表,如下所示; dir(type)
列表,然后通过在其上放置 .
来获取其属性的下一个输出(对于以 __
开头的内容,第一个输出)那么这里是一个列表(参见第 55 行
);
然后对于所有剩余管理(它只是一个mro
);所以将两者结合起来之后;与dir(type)
相同
示例 2
:让我们创建自己的类
在第 59 行
; (即在 testClass
的实例上)让我们首先访问以 __
开头的内容,然后访问其他内容:
最后结合第59行
的这两个结果与dir(testClass)
相同。正确的??就在那时;让我们检查另一个例子
示例 3
:
和
类似地合并第64行
的结果,并将其与示例1的第54行
进行比较。
这就是我的观点。这是我的观察;这是正确的吗????我需要 Python 专家对这一观察结果发表任何专家评论。
最佳答案
dir()
显示对象本身的内容,但使用 .
运算符,您还可以访问对象类型的属性。查看 dir(type(testClass))
,您可以在其中找到您丢失的内容。
关于python - 需要澄清 python 的属性访问及其 dir() 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515649/