为什么程序员要把不能用于属性访问的东西塞进__dict__
?例如,在我的Plone实例中,dir(portal)
包含index_html
,但是portal.index_html
引发AttributeError。对于Products.ZCatalog.Catalog.mybrains
的__class__
属性也是如此。为什么dir()
不可信有什么好的理由吗?在
在inspect
模块中,我发现他们使用object.__dict__['x']
而不是属性访问,因为他们不想触发getattr
魔法。在
Tags:
我不知道普隆,所以以下是一般性的。在
从
dir
的the docs:只是猜测一下,但我能想到两件事可能会发生
对象有一个
__dir__()
方法,该方法返回它没有的属性(不太可能)对象的具有您请求的属性(即,它在}中,但重写
obj.__dict__
或{__getattr__
返回AttributeError
EDIT:python2.6+只支持}可以用于早期版本。在
__dir__
,但是(不推荐使用的)特殊属性__methods__
和{相关问题 更多 >
编程相关推荐