Existe alguma diferença entre
class A:
...
e
class A():
...
Acabei de perceber que algumas de minhas classes são definidas como as primeiras e funcionam muito bem. O parêntese vazio faz alguma diferença?
O último é um erro de sintaxe em versões anteriores do Python. No object
entanto, em Python 2.x você deve derivar de sempre que possível, já que vários recursos úteis estão disponíveis apenas com classes de novo estilo (derivar de object
é opcional no Python 3.x, já que classes de novo estilo são o padrão lá).
object
absurdo é tratado automaticamente.class A()
houve um erro de sintaxe? Os documentos do Python 1.4 dizem que está tudo bem, e esses são os documentos mais antigos ainda disponíveis em python.org.Embora possa não ser sintaticamente incorreto usar os parênteses vazios em uma definição de classe, os parênteses depois de uma definição de classe são usados para indicar herança, por exemplo:
class A(baseClass): ...
Em Python, a sintaxe preferida para uma declaração de classe sem nenhuma classe base é simplesmente:
class A: ...
Não use parênteses, a menos que você esteja subclassificando outras classes.
A documentação sobre o assunto deve dar a você um melhor entendimento de como declarar e usar classes em Python.
fonte