[Zope] Re: Getting a methods parent (in a product)
    Tres Seaver 
    tseaver at palladion.com
       
    Sun Jul 24 21:54:57 EDT 2005
    
    
  
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Jens Vagelpohl wrote:
> 
> On 23 Jul 2005, at 16:12, Peter Bengtsson wrote:
> 
>>> from Acquisition import aq_inner, aq_parent
>>>
>>> parent = aq_parent(aq_inner(self))
>>>
>>> This will return the true container the instance is set in, not just
>>> the acquisition parent.
>>>
>>>
>> What's so bad about
>> parent = self.aq_parent
> 
> 
> Two things:
> 
> - simply using aq_parent does not guarantee giving you the real 
> containment parent. Depending on the path used to access the object  it
> could be something different from the true containment parent.  That's
> the power of acquisition...
Which is why the 'aq_inner()' call is in there:  it strips away
non-contaiment wrappers.
> - direct attribute access like that makes me feel dirty. I prefer the 
> true object-oriented style where you use methods to get at stuff.
The actual issue is that attribute access will break if you have an
unwrapped object;  'aq_parent(foo)' will return 'None' in that case.
(A tiny nit, 'aq_parent()' and the related 'aq_base()' and 'aq_inner()'
are module-scope functions, rather than methods).
Tres.
- --
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFC5EZx+gerLs4ltQ4RAk9+AKCsb9wg7edRq4HfFcHn/FwBvpSmCwCeK8Ke
zt8foauYT7v9DRf2TYbqMjE=
=eU4v
-----END PGP SIGNATURE-----
    
    
More information about the Zope
mailing list