Alex Martelli wrote: > >>> class Base(object) >>> def getFoo(self): ... >>> def setFoo(self): ... >>> foo = property(getFoo, setFoo) >>> >>> class Derived(Base): >>> def getFoo(self): .... >> [snip] > the solution, in Python 2.4 and earlier, is to use > one extra level of indirection: > def __getFoo(self): return self.getFoo() > def getFoo(self): ... > foo = property(__getFoo) > so the name lookup for 'getFoo' on self happens when you access s.foo > (for s being an instance of this here-sketched class) and overriding > works just as expected.
Another solution (for those of you scoring at home) would be to use a property-like descriptor that delays the name lookup until the time of the method call, e.g. http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/442418 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/408713 STeVe -- http://mail.python.org/mailman/listinfo/python-list