[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 )
>