python – Class with Object as a parameter

python – Class with Object as a parameter

In Python2 this declares Table to be a new-style class (as opposed to classic class).
In Python3 all classes are new-style classes, so this is no longer necessary.

New style classes have a few special attributes that classic classes lack.

class Classic: pass
class NewStyle(object): pass

print(dir(Classic))
# [__doc__, __module__]

print(dir(NewStyle))
# [__class__, __delattr__, __dict__, __doc__, __format__, __getattribute__, __hash__, __init__, __module__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, __weakref__]

Also, properties and super do not work with classic classes.

In Python2 it is a good idea to make all classes new-style classes. (Though a lot of classes in the standard library are still classic classes, for the sake of backward-compatibility.)

In general, in a statement such as

class Foo(Base1, Base2):

Foo is being declared as a class inheriting from base classes Base1 and Base2.

object is the mother of all classes in Python. It is a new-style class, so inheriting from object makes Table a new-style class.

The Table class is extending a class called object. Its not an argument. The reason you may want to extend object explicitly is it turns the class into a new-style class. If you dont explicitly specify it extends object, until Python 3, it will default to being an old-style class. (Since Python 3, all classes are new-style, whether you explicitly extend object or not.)

For more information on new-style and old-style classes, please see this question.

python – Class with Object as a parameter

class Table and class Table(object) are no different for Python.

Its not a parameter, its extending from object (which is base Class like many other languages).

All it says is that it inherits whatever is defined in object. This is the default behaviour.

Leave a Reply

Your email address will not be published. Required fields are marked *