> > PS: are you sure the lambda self: self.__foo() trick works, with > subclasses or otherwise? I haven't tested it, and I'm not saying it > doesn't, but I have a feeling double-underscore name mangling might be a > problem somewhere down the line? > > Awesome, Thomas. The trick only works if there is only *one* leading underscore in the *method* names.
The following example works as I expected for the derived class B. class A(object): def __init__(self): self.__not_here = 1 def _get_not_here(self): return self.__not_here def _set_not_here(self, v): print "I am called" self.__not_here = v not_here = property(lambda self: self._get_not_here(), lambda self, v: self._set_not_here(v)) class B(A): def _set_not_here(self, v): print "version B" self.__not_here = v a = A() # print a.__not_here print a.not_here # a.set_not_here(10) a.not_here = 10 print a.not_here b = B() print b.not_here b.not_here = 70 # print version B print b.not_here -- Tony Kong *blog:* www.ahwkong.com Don’t EVER make the mistake that you can design something better than what > you get from ruthless massively parallel trial-and-error with a feedback > cycle. That’s giving your intelligence *much* too much credit. - Linus Torvalds
-- http://mail.python.org/mailman/listinfo/python-list