views:

216

answers:

3

In Python I can define a class 'foo' in the following ways:

class foo:
    pass

or

class foo(object):
    pass

What is the difference? I have tried to use the function issubclass(foo, object) to see if it returns True for both class definitions. It does not.

IDLE 2.6.3      
>>> class foo:
        pass

>>> issubclass(foo, object)
False
>>> class foo(object):
        pass

>>> issubclass(foo, object)
True

Thanks.

+5  A: 

Inheriting from object makes a class a "new-style class". There is a discussion of old-style vs. new-style here: http://stackoverflow.com/questions/54867/old-style-and-new-style-classes-in-python

steveha
addition: in py 3, everything's automatically a new style class
CrazyJugglerDrummer
+2  A: 

The first creates an "old-style" class, which are deprecated and have been removed in Python 3. You should not use it in Python 2.x. See the documentation for the Python data model.

John Millikin
+2  A: 

Old style and new style objects... they have sightly different behaviours, for example in the constructors, or in the method resolution order in multiple inheritance.

fortran