I hacked up the python code that makes up the ZDiscussions base classes. This allows me to make base classes that can inherit all kinds of nifty things from each other, but then I just have my ZClasses inherit from these classes. You still wont see your ZClasses in the selection lists, but at list your 'base' classes will be there. It is all rather complicated and unsatisfactory, but it does the job until zope has some more time to mature.
But I assumed that this is such a critical part of OO-design methodology that I really should be possible in Zope. Would anyone in Digital Creations care to step forward and explain why there is no easy way to do this? And understand that this isn't meant as harsh as it sound, I am just wondering why I can't implement very simple OO concepts in Zope. I guess it's all a function of me being frustrated over the documentation. :) My original post is included below. Regards, Alexander Limi http://mp3.no
Alexander Limi wrote:
Zopistas,
After fooling around a bit (a rather big bit, I might add (possibly even a byte)), I have come across something not mentioned in the docs. (Surprise!)
My starting point is this:
I want to create a superclass, which has the properties inherited by all the subclasses, like this:
Software | |--Application | |--Game
All software has properties that can (and should) be superclassed, like software_title, software_publisher etc.
I tried to create ZClasses within ZClasses, but when I instantiate an object of the type Game, I can only edit the variables set specifically in Game, not the properties that should be inherited from Software.
I want to superclass as many variables as possible, to avoid duplication of work. Most of the subclasses have 2 or 3 unique variables, all others are common.
I am familiar with common OO parlance, but Zope is weird in some ways. I suppose the properties are inherited in the above example, but I want to be able to override the values from Software with instance variables/properties/whatever. And to edit them (the inherited properties) from the built-in zope manage form.
How do I do this?
Additionally, is there a way to automagically generate an addForm method AFTER editing the propertysheet for that class, to reflect the new variables (I'm getting tired of updating the HTML by hand every time :)