What is the purpose of subclassing the class “object” in Python?

In short, it sets free magical ponies.

In long, Python 2.2 and earlier used “old style classes”. They were a particular implementation of classes, and they had a few limitations (for example, you couldn’t subclass builtin types). The fix for this was to create a new style of class. But, doing this would involve some backwards-incompatible changes. So, to make sure that code which is written for old style classes will still work, the object class was created to act as a superclass for all new-style classes.
So, in Python 2.X, class Foo: pass will create an old-style class and class Foo(object): pass will create a new style class.

In longer, see Guido’s Unifying types and classes in Python 2.2.

And, in general, it’s a good idea to get into the habit of making all your classes new-style, because some things (the @property decorator is one that comes to mind) won’t work with old-style classes.

Leave a Comment