Here's what new-style classes have to offer:
Properties: Attributes that are defined by get/set methods
Static methods and class methods
The new __getattribute__ hook, which, unlike
__getattr__, is called for every attribute access,
not just when the attribute can't be found in the instance
Descriptors: A protocol to define the behavior of attribute access through objects
Overriding the constructor __new__
Metaclasses (not discussed)