who can access my datathird-party libraries case study exercises summary when objects are alike expecting the unexpected basic inheritance extending built-ins overriding and super multiple inheritance the diamond problem different sets of arguments polymorphism abstract base classes using an abstract base class creating an abstract base class demystifying the magic case study exercises summary raising exceptions raising an exception the effects of an exception handling exceptions the exception hierarchy defining our own exceptions case study exercises summary when to use object-oriented programming treat objects as objects adding behavior to class data with properties properties in detail decorators another way to create properties deciding when to use properties manager objects removing duplicate code in practice ii