skip to navigation
skip to content

Not Logged In

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.