On 5/30/2021 12:57 PM, Irv Kalb wrote:
I am doing some writing (for an upcoming book on OOP), and I'm a little stuck.
I understand what a "property" is, how it is used and the benefits, but
apparently my explanation hasn't made the light bulb go on for my editor. The editor is
asking for a definition of property. I've looked at many articles on line and a number
of books, and I haven't found an appropriate one yet.
I have written some good examples of how it works, but I agree that a
definition up front would be helpful. I have tried a number of times, but my
attempts to define it have not been clear. Perhaps the best I've found so far
is from the Python documentation:
A property object has getter, setter, and deleter methods usable as decorators
that create a copy of the property with the corresponding accessor function set
to the decorated function.
But I'm hoping that someone here can give me a more concise (one or two sentence)
definition of the word "property".
(I would like to avoid going through the whole derivation with the property
function, as that would distract from the points that I am trying to make.)
From a user viewpoint, which is likely close to that of the editor, a
property is a possibly dynamic class attribute managed by up to 3 hidden
functions.
A user only needs to know that an attribute is a property when it has
otherwise surprising dynamic behavior. For instance, if 'time.now !=
time.now', or if 'time.now = something; print(time.now)' does not print
'something'.
Note: at least one person says a property *pretends* to be an attribute.
I think a more useful view is that it *is* an attribute with a
particular behind-the-scene implementation. When a normal attribute is
converted to a 'property', it effectively still is an attribute. The
syntax manipulating the attribute remains the same. If one can set,
get, and delete something dotted notation, it is an attribute.
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list