setters and getters in python 2.6 and 3.0

Daniel Fetchinson fetchinson at
Thu Nov 29 20:13:07 CET 2007

Hi list, I've been following a discussion on a new way of defining
getters and setters on python-dev and just can't understand what the
purpose is. Everybody agreed on the dev list that this is a good idea
so I guess it must be right :)

The whole thing started with this post of Guido:

which then continued into November. Basically, the idea is that using
the new way a setter can be added to property that was read-only
before. But if I have this already,

class C:
    def attr( self ): return self._attr

what prevents me using the following for adding a setter for attr:

class C:
    def attr( self ): return self._attr
    def set_attr( self, value ): self._attr = value
    attr = property( attr, set_attr )

In other words all I needed to do is delete @property, write the
setter method and add attr = property( attr, set_attr ). What does the
new way improve on this?

More information about the Python-list mailing list