On Tue, 08 Nov 2011 15:17:14 +1100, Lie Ryan wrote: > On 10/31/2011 11:01 PM, dhyams wrote: >> >> Thanks for all of the responses; everyone was exactly correct, and >> obeying the binding rules for special methods did work in the example >> above. Unfortunately, I only have read-only access to the class itself >> (it was a VTK class wrapped with SWIG), so I had to find another way to >> accomplish what I was after. >> >> > As a big huge hack, you can always write a wrapper class: > > class Wrapper(object): > def __init__(self, *args, **kwargs): > self.__object = MySWIGClass(*args, **kwargs) > def __getattr__(self, attr): > try: > return getattr(self.__object, attr) > except AttributeError: > ...
That's not a hack, that's a well-respected design pattern called Delegation. http://rosettacode.org/wiki/Delegate http://en.wikipedia.org/wiki/Delegation_pattern In this case, you've implemented about half of automatic delegation: http://code.activestate.com/recipes/52295 which used to be much more important in Python prior to the type/class unification in version 2.2. To also delegate special dunder methods using new-style classes, see this: http://code.activestate.com/recipes/252151 -- Steven -- http://mail.python.org/mailman/listinfo/python-list