8

some time i see some classes defined as subclass of object class, as

class my_class(object):
    pass

how is if different from the simple definition as

class my_class():
    pass
2

5 Answers 5

8

This syntax declares a new-style class.

Sign up to request clarification or add additional context in comments.

1 Comment

+∞: Oh look the question's already answered in the documentation. I wish folks would read more and ask less.
4

The first one is a new style class and the second is the old style class.

EDIT

In [1]: class A:
   ...:     pass
   ...: 

In [2]: class B(object):
   ...:     pass
   ...: 

In [3]: a = A()

In [4]: b = B()

In [5]: dir(a)
Out[5]: ['__doc__', '__module__']

In [6]: dir(b)
Out[6]: 
['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__']

1 Comment

Does subclassing from object brings any inherited property to the class my_class ?
3

For Python 3.x, there is no difference. In Python 2.x, deriving from object makes a class new-style, while providing no base classes will give you an old-style class.

Comments

3

For new-style classes in Python 2.x, you MUST explicitly inherit from object. Not declaring that a class inherit from object gives you an old-style class. In Python 3.x, explicitly inheriting from object is no longer required, so you can just declare in Python 3.x with Python 2.x old-style class syntax class Klass: pass and get back a new-style (or just a class) class.

Comments

2

This is the "NEW" Style, and your question is similar to Python class inherits object

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.