On 5/27/2010 9:14 AM, Neil Cerutti wrote:
On 2010-05-27, eb303<eric.brunel.pragma...@gmail.com>  wrote:
I've been using Python properties quite a lot lately and I've
found a few things that are a bit annoying about them in some
cases. I wondered if I missed something or if anybody else has
this kind of problems too, and if there are better solutions
than the ones I'm using ATM.

The first annoyance is when I want to specialize a property in a
subclass.

See:

URI:http://infinitesque.net/articles/2005/enhancing%20Python%27s%20property.xhtml


Very nice idea, but I think this solution works too hard and not quite correctly. In Python 2.6.5, checking the name of the OProperty object's "fget" method:

    if self.fget.__name__ == '<lambda>' or not self.fget.__name__:

... doesn't distinguish between the original class's get-the-value method and the derived class's. (Did something change between 2005-11-02 and now?)

Moreover, you don't *need* to perform this check -- just let *getattr* do the work of finding the right method. These method defs work fine for me:

    def __get__(self, obj, objtype):
        if self.fget:
            return getattr(obj, self.fget.__name__)()
        else:
            raise AttributeError, "unreadable attribute"

    def __set__(self, obj, value):
        if self.fset:
            getattr(obj, self.fset.__name__)(value)
        else:
            raise AttributeError, "can't set attribute"

-John
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to