The outline of attribute access in Section 26.2.2, “Attribute access control in new-style classes” is slightly oversimplified in one respect. Any of the attribute search steps in this procedure may produce a property rather than the actual attribute value.
A property is a special object that is produced by the
property() function. For a discussion
of the three types of attribute access (get, set, and
delete), the protocols for the accessor functions, and
examples, see Section 21.15, “property(): Create an access-controlled
attribute”.