[Zope-dev] Extension class and __init__
Chris McDonough
chrism@zope.com
Mon, 22 Jul 2002 08:52:27 -0400
Ross,
Please see the bit about "inheritedAttribute" in the document inside
Zope's source tree named
lib/Components/ExtensionClass/doc/ExtensionClass.html.
HTH,
- C
----- Original Message -----
From: "Ross Boylan" <RossBoylan@stanfordalumni.org>
To: <zope-dev@zope.org>
Cc: "Ross Boylan" <RossBoylan@stanfordalumni.org>
Sent: Monday, July 22, 2002 3:30 AM
Subject: [Zope-dev] Extension class and __init__
> I had the bright idea of defining a mixin class whose methods I
> thought I could use in my regular Zope product classes:
>
> class AMixin:
> def __init__(self):
> blah, blah blah
>
> class B(AMixin, Persistent, Folder, ....):
> def __init__(self):
> # do some of my own stuff
> AMixin.__init__(self)
>
> This fails with the warning (as I recall) that the unbound method
> AMixin.__init__ needs to be called with an instance as its first
> argument. (I've stripped the example down to give what I think are
> the essentials).
>
> self in the context of B is an Extension class, and I'm guessing
this
> is making AMixin unhappy because it's not. I assume I'll have the
> same problem with other methods that I attempt to access using
> AMixin.foo(self).
>
> Can anyone confirm this diagnosis? And what's the best solution?
>
> I have redefined things
> class AMixin:
> def _mixin_init(self):
> #stuff
>
> class B(AMixin, .....):
> def __init__(self):
> #my own stuff
> self._mixin_init(self)
>
> and this seems to work, but I wonder if there's a way to get the
> classes to play together better (maybe "class
AMixin(ExtensionClass):"?
> though since ExtensionClass is a type I guess that's not exactly
it).
>
> This was after already discovering that isinstance doesn't work with
> ExtensionClass (which I see confirmed on the list, along with the
fact
> that ExtensionClass generally has a lot of rough spots and may be on
> the way out). This is with Zope 2.5.1.
>
>
> _______________________________________________
> 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 )
>