Most of what I have covered so far in this chapter also holds for the new-style object model introduced in Python 2.2. New-style classes and instances are first-class objects just like classic ones, both can have arbitrary attributes, you call a class to create an instance of the class, and so on. In this section, I’m going to cover the few differences between the new-style and classic object models.
In Python 2.2 and 2.3, a class is new-style if it inherits from
object directly or indirectly (i.e.,
if it subclasses any built-in type, such as
object, and so on). In Python 2.1 and earlier, a
class cannot inherit from a built-in type, and built-in type
object does not exist. In Section 5.4 later in this chapter, I
cover other ways to make a class new-style, ways that you can use in
Python 2.2 or later whether a class has superclasses or not.
As I said at the beginning of this chapter, I suggest you get into the habit of using new-style classes when you program in Python 2.2 or later. The new-style object model has small but measurable advantages, and there are practically no compensating disadvantages. It’s simpler just to stick to the new-style object model, rather than try to decide which model to use each time you code a new class.
Python 2.2, the built-in
object type is the
ancestor of all built-in types and new-style classes. The
object type defines some special methods (as documented ...