[Zope-dev] Acquisition wishlist :-)
Martijn Pieters
mj@digicool.com
Fri, 5 Jan 2001 13:12:47 +0100
On Thu, Jan 04, 2001 at 10:46:35AM +0000, Chris Withers wrote:
> Dieter Maurer wrote:
> >
> > > acquisition.donotacquire('index_html')
> > This would be great.
>
> Indeed :-)
>
> > > class MyClass (Acquisition.Explicit):
> > >
> > > acquisition = ClassAcquisitionInfo()
> > >
> > > acquisition.acquire('index_html')
> > > acquisition.acquire('fred')
> > You already can do that, though with a different syntax
> > (I would need to search for in the documentation).
>
> You may mean that if x is an Acquisition.Explicit object, you can do:
>
> x.aq_acquire('your_attribute') (syntax may be wrong ;-)
>
> What I meant is that through a declaration in the class you could saying
> acquire the 'your_attribute' attribute but nothing else. So, you could
> still do:
>
> x.your_attribute ...which would be acquired, but...
> x.index_html ...which wouldn't be acquired.
You could use ComputedAttribute for that:
class MyClass(Acquisition.Explicit):
# The following attribute is acquired transparently
def _acquired_your_attribute(self):
return self.aq_acquire('your_attribute')
your_attribute = ComputedAttribute(_acquired_your_attribute, 1)
# index_html isn't
index_html = None
Or you could define a __getattr__ that does a lookup in a list for
explicetly acquired attributes:
_acquired = ('index_html', 'fred')
def __getitem__(self, key):
if key in self._acquired:
return self.aq_acquire(key)
raise AttributeError, name
--
Martijn Pieters
| Software Engineer mailto:mj@digicool.com
| Digital Creations http://www.digicool.com/
| Creators of Zope http://www.zope.org/
---------------------------------------------