| delegate (version 0.1) | index /home/dickrp/svn/support/python/delegate/delegate.py | 
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.
| Classes | ||||||||||
| 
 
 | ||||||||||
| Functions | ||
| 
 | ||
| Data | ||
| __author__ = 'Robert Dick' __author_email__ = 'dickrp@eecs.umich.edu' __version__ = '0.1' | ||
| Author | ||
| Robert Dick | ||