Skip to main content
Help us improve Python packaging – donate today!

Class to automate delegation decisions based on inheritance graph.

Project Description

Class to automate delegation decisions based on inheritance graph.

Copyright 2004, Robert Dick (dickrp@eecs.umich.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 file for legal information.

Release history Release notifications

This version
History Node

0.1

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page