>
> 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

Reply via email to