If you look at the brains code in Results.py you see that on the fly a class called 'r' is created that inherits from (Record,Implicit,brains,zbrains) where brains is your brain class. see ./lib/python/Shared/DC/ZRDB/Resuts.py line 67 (Zope 2.5.1) you can overload __getattr__ in your brain class, but since this class is on the fly subclassed with the class 'r', that inherits first from 'Record' that is an extension class that has its own __getattr__ your __getattr__ never gets called. regards phil Dieter Maurer wrote:
Jo Meder writes:
Situation: I'm developing a product where some attributes come from one bunch of SQL-tables and some additional info is obtained by other means.
The idea was to create a brain-class and overwrite __getattr__ to return the correct values from the different sources according to what key the application asked for.
The objects are created (just like in DA.py) via
objects=Results.Results(result,brain,parent,None)
Now whatever I try, either some other __getattr__ seems to be called since I can get none of my "simulated" attributes to show up. It should work with modern Zope versions.
I once tried and failed with an older version (Zope 2.1.6). My "__getattr__" led to an infinite loop.
Dieter
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )