So we can create new objects with any relationship we choose, but what does it buy us?
The relationships between objects determine how attribute access on the
object works. For example, when we say
objectname.attributename, which object do we end up
with? It all depends on objectname, its type, and
its bases (if they exist).
Attribute access mechanisms in Python are explained in the second book of this series: Python Attributes and Methods.