Pourquoi un codeur insère-t-il des choses dans __dict__
qui ne peuvent pas être utilisées pour l'accès aux attributs? Par exemple, dans mon instance Plone, dir(portal)
inclut index_html
, mais portal.index_html
déclenche AttributeError. Cela est également vrai pour l'attribut __class__
de Products.ZCatalog.Catalog.mybrains
. Y a-t-il une bonne raison de ne pas faire confiance à dir()
?Pourquoi tous les noms de dir (x) ne sont-ils pas valides pour l'accès aux attributs?
En passant autour du module inspect
, je vois qu'ils utilisent object.__dict__['x']
au lieu de l'accès d'attribut pour cette raison et parce qu'ils ne veulent pas déclencher getattr
magique.
'__dir__' est nouveau dans python 2.6, et IIRC Zope ne fonctionne toujours pas sur quelque chose de plus récent que python 2.4. – habnabit
C'est vrai, j'utilise Python 2.4. Zope ne fonctionne pas encore officiellement sur un nouveau Python bien que cela ait été fait expérimentalement. – joeforker