[Python-Dev] string-valued fget/fset/fdel for properties
Nicodemus
nicodemus at esss.com.br
Mon Nov 24 21:39:39 EST 2003
Guido van Rossum wrote:
>You could then
>also do away with the metaclass, but you'd be back at Nicodemus's
>proposal, and that seems to incur too much overhead (we could use
>heavy caching, but it would be a bit hairy).
>
>
I think the overhead is very small, unless I'm overlooking something.
The only extra overhead that I see is the extra lookup every time the
property is accessed, which is the same as calling a method. But I agree
that this difference could be significant for some applications.
>Anyway, all of this can be implemented easily by subclassign property
>or by defining your own descriptor class -- there's no magic, just
>define __get__ and __set__ (and __delete__ and __doc__, to be
>complete).
>
>So maybe somebody should implement this for themselves and find out
>how often they really use it.
>
>
Actually, I already did it. 8)
The class accepts functions just like property does, but keeps only the
names of the functions, and uses getattr in __get__ and __set__ to
access the actual functions (nothing magical, as you pointed it out).
I use it quite often, and the biggest advantage is that when you *do*
need to overwrite one of the property's methods, you don't have to
change anything in the base class: you just overwrite the method in the
derived class and that's it. So as a rule, I always use this property
instead of the built-in, but that's for other reasons besides easy
subclassing.
Regards,
Nicodemus.
More information about the Python-Dev
mailing list