Adam wrote: > class A(object): > def __init__(self, method, usebar = False): > self.method = method > self.usebar = usebar > > def __call__(self): > if self.usebar == True: > mangled_name = "_bar_" + self.method > if hasattr(self, mangled_name): > return getattr(self, mangled_name)() > else: > return getattr(self, self.method)() > else: > if hasattr(self, self.method): > return getattr(self, self.method)() > else: > raise NotImplementedError > > @bar > def foo(self): > print "in _bar_foo" > > def foo(self): > print "in foo"
this isn't exactly what you ask for, but it gives a similar result. it's kind of obvious, but it's possible you didn't know methods were first class entities. class Foo: def __init__(self, useBar=False): if useBar: self.foo = self.__bar else: self.foo = self.__foo def __foo(self): print('foo') def __bar(self): print('bar') andrew -- http://mail.python.org/mailman/listinfo/python-list