Garito wrote at 2006-10-18 16:15 +0200:
> ...
>How can I control the way an attribute of a product is readed? 
>__getattr__? __getattribute__?

A "product" is an extension mechanism for Zope. Usually, a
"product" does not have attributes (you are interested in).

But inside your product you may have defined classes
instances of which you place into the Zope hierarchy
(<http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
speaks about site building objects).

The standard Python way to access their attributes ("__getattr__"
and "__getattribute__") will work but has caveats: It is *very* easy
to create infinite loops with it and their "self" with not be
acquisition wrapped.

The Zope specific safer way is to implement "__bobo_traverse__".
Both the publisher as well as "[un]restrictedTraverse" (which
is internally used by TALES path expressions) use "__bobo_traverse__"
when defined. However, Python's "getattr" will not use it.



-- 
Dieter
_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to