Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python 'object' type and inheritance

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.

like image 843
Nate Avatar asked Dec 13 '22 02:12

Nate


2 Answers

Inheriting from object makes a class a "new-style class". There is a discussion of old-style vs. new-style here: What is the difference between old style and new style classes in Python?

As @CrazyJugglerDrummer commented below, in Python 3 all classes are "new-style" classes. In Python 3, the following two declarations are exactly equivalent:

class A(object):
    pass

class A:
    pass
like image 85
steveha Avatar answered Dec 27 '22 18:12

steveha


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.

like image 23
John Millikin Avatar answered Dec 27 '22 19:12

John Millikin