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 )