[Tutor] a class query

Steven D'Aprano steve at pearwood.info
Mon Jun 7 18:15:05 CEST 2010


On Tue, 8 Jun 2010 02:03:18 am python at bdurham.com wrote:

> Here's why I'm confused. The following paragraph from TFM seems to
> indicate that old style classes are the default:

Yes, if you don't inherit from object, or another class that inherits 
from object (like the built-ins), you get an old-style class.


> Yet TFM for 2.6.5 shows all class examples without specifying a
> parent class.
> http://docs.python.org/tutorial/classes.html

As the docs also say, they were mostly written before the existence of 
new-style classes, and they haven't been updated to show the new 
syntax. Since Python 3.0 will make such a change obsolete, they will 
probably never be updated.


> I've been taught that the proper way to create new style classes has
> been to always specify an explicit "object" parent class when
> creating a new class not based on other classes.
>
> Somewhere along the line I seemed to have missed the fact that it is
> no longer necessary to define classes with 'object' as a parent in
> order to get a new style class.

That only holds for Python 3.x, since old-style classes don't exist any 
longer.


> In other words, it seems that the following are now equivalent:
>
> class Name:
>
> -AND-
>
> class Name( object ):

Only in Python 3.x.


> My impression was the "class Name:" style created an old style class.

Only in Python 2.x (and 1.x, but who still uses that?).



-- 
Steven D'Aprano


More information about the Tutor mailing list