multiple extensions to a class
michele.simionato at gmail.com
Sat Jul 10 07:58:29 CEST 2004
"Humpty Dumpty" <oliver.schoenborn at utoronto.ca> wrote in message news:<dVnHc.35189$WM5.1797482 at news20.bellglobal.com>...
> Hello, I'm experimenting with different ways of extending a class (for a
> plug-ins framework for a GUI) with more than one extension when some of
> these extensions need to collaborate, but others mustn't know about each
> I.e., if I have a class A, and I want to add a block of functionality, I
> can derive it into a B that adds that fucntionality. If I want to add more
> functionality, I can derive B into a C. But if I want to add a third bit of
> functionality D directly to A, such that D knows nothing about B or C, I
> won't be able to instantiate an object that has all three extensions, namely
> an "ABCD". It will either be an "ABC" or an "AD".
> One possibility would be to define the extensions B,C and D as functions and
> add those functions to A with new.instancemethod. Any other ideas on how to
> do this? E.g. is it possible to *add* base classes to a class? I could add
> the extensions by adding them as base classes to A.
I am not sure about your question. It seems you want mixins. Do you want
the ability to add a plugin dynamically and add new methods to all
your objects at run-time, including previously instanced objects?
It can be done. Or maybe you want to decide the plugins to use at import
time, i.e. you want "import_with_metaclass". In this case you may
google this newgroup and look at this article:
(there is also a second one http://www-106.ibm.com/developerworks/library/l-pymeta2)
More information about the Python-list