[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