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
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to