[Python-Dev] Declaring setters with getters

Greg Ewing greg.ewing at canterbury.ac.nz
Wed Oct 31 23:48:43 CET 2007


Guido van Rossum wrote:
>     @property
>     def encoding(self):
>         return self._encoding
> 
>     @propset(encoding)
>     def encoding(self, value=None):
>         if value is not None:
>             unicode("0", value)  # Test it
>         self._encoding = value

That's reasonably nice, although I'm not sure about the
name "propset" -- it sounds like a repair kit for an
aircraft. Maybe something like "setproperty" would be
better.

But there's something that bothers me about the whole
propery mechanism -- there's no straightforward way for
a property accessor to call the inherited version from
a base class.

Wrapping property accessors up in decorators makes this
worse. At least when the accessors are declared as separate
functions you have a chance of grabbing an inherited one
and calling it. But if they're buried inside property
descriptors with no other reference to them, it's a lot
harder to get hold of one.

--
Greg


More information about the Python-Dev mailing list