Creating Classes

Alf P. Steinbach alfps at start.no
Fri Dec 18 23:21:10 EST 2009


* Dave Angel -> seafoid:
> 
> One other point:  you should always derive a class from some other 
> class, or 'object' by default.  So you should being the class definition 
> by:
> 
> class Seq(object):
> 
> Why?  It mainly has to do with super().  But in any case if you omit the 
> 'object' it's an "old style" class, and that's not even supported in 
> 3.x, so it's better to just get in the habit before it matters.

I think it's best to mention that the above applies to Python 2.x.

In Python 3.x, writing

    class Seq:

is equivalent to writing

    class Seq( object ):

E.g.,

   >>> class A: pass
   ...
   >>> A.__bases__
   (<class 'object'>,)
   >>>
   >>> class B( object ): pass
   ...
   >>> B.__bases__
   (<class 'object'>,)
   >>> _


Curiously I can't find anything about 'object' in the language spec, but in the 
3.1.1 standard library spec §2 "Built-in functions" it says "object is a base 
for all classes."


Cheers,

- Alf



More information about the Python-list mailing list