Method / Functions - What are the differences?

John Posner jjposner at optimum.net
Thu Mar 4 16:17:20 EST 2010


On 3/3/2010 6:56 PM, John Posner wrote:
>
> ... I was thinking
> today about "doing a Bruno", and producing similar pieces on:
>
> * properties created with the @property decorator
>
> * the descriptor protocol
>
> I'll try to produce something over the next couple of days.
>

Starting to think about a writeup on Python properties, I've discovered 
that the official Glossary [1] lacks an entry for "property" -- it's 
missing in both Py2 and Py3!

Here's a somewhat long-winded definition -- comments, please:

---------------------------------------------
An attribute, *a*, of an object, *obj*, is said to be implemented as a 
property if the standard ways of accessing the attribute:

  * evaluation:      print obj.a
  * assignment:      obj.a = 42
  * deletion:        del obj.a

... cause methods of a user-defined *property object* to be invoked. The 
attribute is created as a class attribute, not an instance attribute. 
Example:

   class Widget:
       # create "color" as class attribute, not within __init__()
       color = <<property-object>>

       def __init__(self, ...):
           # do not define "self.color" instance attribute

The property object can be created with the built-in function 
property(), which in some cases can be coded as a decorator: @property. 
The property object can also be an instance of a class that implements 
the descriptor protocol.
---------------------------------------------

Tx,
John

[1]  http://docs.python.org/glossary.html



More information about the Python-list mailing list