An object is a collection of features, including methods and attributes. The default behavior of the
object class involves setting, getting, and deleting named attributes. We often need to modify this behavior to change the attributes available in an object.
This chapter will focus on the following five tiers of attribute access:
@propertydecorator. A property extends the concept of an attribute to include the processing defined in method functions.
__setattr__(), and ...