New-Style Classes and Instances
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
built-in type object
directly or indirectly (i.e.,
if it subclasses any built-in type, such as list
,
dict
, file
,
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.
The Built-in object Type
As of
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 ...
Get Python in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.