[Zope] Extending Zope system code without editing
Dennis Allison
allison@sumeru.stanford.EDU
Tue, 4 Mar 2003 08:50:39 -0800 (PST)
Not quite... How do I modify a class defined in lib/python/StructuredText
or lib/python/ZPublisher or the like with the minimum of fuss and without
patching the actual distributed Zope system code...
On Tue, 4 Mar 2003, Dylan Reinhardt wrote:
> At 06:56 AM 3/4/2003, Dennis Allison wrote:
> > >From time to time I want to do things to the Zope system code, for
> >example, add a new method or override a method in a pre-existing class. Is
> >there a good way to do this within the Zope system structure. I'd like to
> >keep my changes isolated and use the inheritance and namespace mechanisms
> >of Python rather than hard edits.
>
> Inheritance is probably your answer here.
>
> You can either subclass an existing object or mix your code into an
> existing object's definition.
>
> Say you want to add a method to a Folder.
>
> One way is to make a basic product called my_folder, mix in Folder as a
> base class and then start overriding and extending. Then, in the ZMI
> you'll have the option of whether to use a standard Zope folder or one of
> your custom Folders.
>
> On the other hand, you could create a Python module called
> my_folder_changes, create a simple class called my_folder and use it to
> define the behaviors you want to see. Then add your class to the *front*
> of the list of base classes inherited by Folder. This won't override
> anything actually defined in Folder's class definition... you'll need to
> comment those out to override them with this technique.
>
> Is that what you're looking for?
>
> HTH,
>
> Dylan
>