class definition

Miles semanticist at gmail.com
Wed May 7 20:53:06 EDT 2008


On Wed, May 7, 2008 at 7:40 PM, Yves Dorfsman <yves at zioup.com> wrote:
> Does it make a difference if you put subclass object or not ?
>
>  What is the difference between c1 and c2 here:
>
>  class c1:
>   pass
>
>  class c2(object):
>   pass

>>> type(c1)
<type 'classobj'>
>>> type(c1())
<type 'instance'>
>>> type(c2)
<type 'type'>
>>> type(c2())
<class '__main__.c2'>

In Python 2.2, classes and types were unified.  If a class inherits
from object (or any other built-in), it is considered a "new-style"
class; otherwise, it is an old-style (or classic) class.  There are
some differences in their behavior; most notably, descriptors
(computer properties) will not work with old-style classes.  Old-style
classes will go away in Python 3 (I think), and all classes will have
object as a base.

An introduction to new-style classes:
http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html
A guide to descriptors:
http://users.rcn.com/python/download/Descriptor.htm
The reference manual on the distinction:
http://docs.python.org/ref/node33.html
The technical explanation:
http://www.python.org/download/releases/2.2.3/descrintro/

-Miles



More information about the Python-list mailing list