[Zope-dev] Adding properties in __init__

Toby Dickenson tdickenson@geminidataloggers.com
Tue, 07 Nov 2000 13:20:44 +0000


On Tue, 07 Nov 2000 11:54:57 +0000, Chris Withers <chrisw@nipltd.com>
wrote:

>I have a product class that subclasses SimpleItem and PropertyManager.
>
>If I try and add a property in __init__ as so:
>
>self.manage_addProperty('AProperty','1\n2\n3','lines')
>
>I get the following wonderful error:
>
>Error Type: AttributeError
>Error Value: aq_base
>
>I'm guessing that this is because self isn't an acquisition wrapper in
>__init__ (even though SimpleItem is Acquisition.Implicit) but what am I
>supposed to do to add a property in __init__?

__init__ has no idea of context, so its less useful in Zope than you
might usually expect.

Your object must have a factory method somewhere.... I suggest adding
an extra method to your object (I always name it '_after_create') and
arrange for it to be called by your factory once the new object is
installed in its container.

Toby Dickenson
tdickenson@geminidataloggers.com