[Tutor] Property questions

John Fabiani jfabiani at yolo.com
Sun Nov 14 01:57:49 CET 2004


On Saturday 13 November 2004 13:49, Kent Johnson wrote:
> John Fabiani wrote:
> > Hi,
> >
> > First how does python know which method to use as in:
> >
> > size = property(getsize,setsize,delsize,'test doc')
> >
> > I just have not seen anything/example that uses the dele of the
> > "property".
> >
> > so:
> >
> > "size = something" # would call the getsize method because of the '='
> > sign?
>
> No, this would call setsize because it is setting a new value for size
>
> > "size" # would call the setsize because of what?
>
> This calls getsize because it is getting the value
>
> > "dele size" # would call the delete method ??????? is that right?
>
> del size
>
> > And how does one call the comment part??
> > "size.__doc__"
>
> Note that all of these require an instance specifier, e.g. myObj.size.
>
> Here is an example. Suppose you have a class Props defined like this:
> class Props(object):
>      def __init__(self):
>          self._x = 0
>
>      def _getx(self):
>          print '_getx'
>          return self._x
>
>      def _setx(self, x):
>          print '_setx'
>          self._x = x
>
>      def _delx(self):
>          print '_delx'
>          del self._x
>
>      x = property(_getx, _setx, _delx, 'This is the "x" property')
>
> Then you can use it like this:
>  >>> p=Props()
>
> Access x through _getx:
>  >>> p.x
>
> _getx
> 0
>
> Set x through _setx:
>  >>> p.x = 3
>
> _setx
>
>  >>> p.x
>
> _getx
> 3
>
> Access the doc string. You have to do this on the attribute of the
> *class*, not the instance
>
>  >>> Props.x.__doc__
>
> 'This is the "x" property'
>
> Delete the attribute:
>  >>> del p.x
>
> _delx
>
> Now it's gone:
>  >>> p.x
>
> _getx
> Traceback (most recent call last):
>    File "<stdin>", line 1, in ?
>    File "Property.py", line 7, in _getx
>      return self._x
> AttributeError: 'Props' object has no attribute '_x'
>
> A good, though technical, guide to properties and descriptors is here:
> http://users.rcn.com/python/download/Descriptor.htm

Thanks I think understand and will check the link..
John


More information about the Tutor mailing list