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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access