[Zope-dev] How to override __getattr__ and not break acquisition

Casey Duncan casey@zope.com
05 Jun 2002 09:21:16 -0400


If your __getattr__ fails to find what it wants, it should raise an
AttributeError. This will give the ball back to the acquisition
machinery.

Thusly:

def __getattr__(self, name):
    if name = 'foo':
        return self.foo()
    raise AttributeError, name

hth,

-Casey

On Tue, 2002-06-04 at 22:28, Erik A. Dahl wrote:
> Ok I need to override __getattr__ in one of my product classes.  I'm 
> sure this is killing acquisition but not sure about the persistence 
> stuff (I think this is working).  Is there a way to make this work? 
>  Here is what I'm doing:
> 
> def __getattr__(self, name):
>     if name == 'myattr':
>         return self.myattr()
> 
> 
> I assume that somewhere in the Acquisition code there is a __getattr__ 
> but I can't find it.  I tried calling Implicit.__getattr__ but its not 
> there.  If some one has an example that would be great.
> 
> -EAD
> 
> 
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope )