Python class definition syntax
Is there a difference between
class A:
...
and
class A():
...
I just realized that a couple of my classes are defined as the former and they work just fine. Do the empty parenthesis make any difference?
Solution 1:
While it might not be syntactically incorrect to use the empty parentheses in a class definition, parentheses after a class definition are used to indicate inheritance, e.g:
class A(baseClass):
...
In Python, the preferred syntax for a class declaration without any base classes is simply:
class A:
...
Don't use parentheses unless you are subclassing other classes.
The docs on the matter should give you a better understanding of how to declare and use classes in Python.
Solution 2:
The latter is a syntax error on older versions of Python. In Python 2.x you should derive from object
whenever possible though, since several useful features are only available with new-style classes (deriving from object
is optional in Python 3.x, since new-style classes are the default there).