The important points covered by this chapter are:
Subtyping built-in types is a great feature, but before doing it, make sure that the existing types aren't suitable without subclassing.
Since super
usage is tricky:Avoid multiple inheritance in your code.
Be consistent with its usage and don't mix new-style and old-style.
Check the class hierarchy before calling its methods in your subclass.
Descriptors let you customize what should be done when you reference an attribute on an object.
Properties are great to build a public API.
Meta-programming is very powerful, but remember that it obfuscates the readability of the class design.
The next chapter focuses on choosing good names for code elements, and on API design best practices.