Questions re subclassing at "load time"

Michele Simionato mis6 at pitt.edu
Mon Jun 23 08:23:17 EDT 2003


"Edward K. Ream" <edreamleo at charter.net> wrote in message news:<vfb68sik4m4v86 at corp.supernews.com>...
> There appears to be an easy way for plugins to override classes in an app.
> This seems like a spectacular capability.  I'd like your comments on the
> following scheme.
> 
> 1. In my app, a plugin is simply a .py file that gets "loaded", i.e.
> imported, at a particular time while my app is starting up.  My app loads
> plugins before creating any objects whose classes may be modified by
> plugins.
> 
> 2. My app defines each class that may be subclassed by plugins using the
> following pattern:
> 
> class aCoreClass:
>     << methods of aCoreClass >>
> 
> class aClass (aCoreClass):
>     pass
> 
> 3. Except as above, all code in my app refers to aClass, not aCoreClass.
> 
> 4. To modify aClass, a plugin does the following at the outer level:
> 
> import aClass  # The file containing aCoreClass and aClass.
> 
> class myNewClass (aClass.aCoreClass):
>     << overriding methods of aCoreClass >>
> 
> aClass.aClass = myNewClass # change what an aClass is!
> 

I don't see anything bad in using Python dynamism, as long as you properly
document your code. I think you could do something similar with multiple
inheritance, and your problem remind me of a paper on mixins by Chuck
Esterbrook that you may find interesting:

http://www.linuxjournal.com/article.php?sid=4540

HTH,

                                                          Michele




More information about the Python-list mailing list