delegate 0.1
Class to automate delegation decisions based on inheritance graph.
Class to automate delegation decisions based on inheritance graph.
Copyright 2004, Robert Dick (dickrp@ece.northwestern.edu).
Whenever you need to delegate to something, inherit from delegate and use self.__<base>.<method()> to access the base. If the delegation was inappropriate due to reconverging paths in the inheritance graph, the return value will be None. In the case of reconverging paths, the left-most call in the method resolution order will be honored. The rest will be nulified. You can also check to see if the base is the no_delegation object. Delegate to all your bases if you need everything in the inheritance graph to be visited. As long as one of a class's (transitive) bases inherits from Delegate, that's enough.
For examples of use, please see the delegate.py file.
Python doesn't yet automate meta-class instantiation. If you need to inherit
from Delegate and another class that does not have a 'type' metaclass, you'll
need to generate a shared derived metaclass and explicitly use that as your
class's metaclass. For example:
import Delegate, qt
class sip_meta_join(type(Delegate), type(qt.QObject)):
def __init__(*args):
type(Delegate).__init__(*args)
type(qt.QObject).__init__(*args)
class MyClass(Delegate, qt.QObject):
__metaclass__ = sip_meta_join
...
Please see the license at the end of the source code for legal information.
- Author: Robert Dick <dickrp at ece northwestern edu>
- Home Page: http://ziyang.ece.northwestern.edu/~dickrp/python/mods.html
- Download URL: http://ziyang.ece.northwestern.edu/~dickrp/python/delegate-0.1.tar.gz
- License: modified Python
- Categories
- Package Index Owner: Robert Dick
- DOAP record: delegate-0.1.xml
