Sintaxe de definição de classe Python

95

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?

Falmarri
fonte

Respostas:

23

O último é um erro de sintaxe em versões anteriores do Python. No objectentanto, 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á).

Ignacio Vazquez-Abrams
fonte
7
Não é mais verdade no python 3; tudo o que deriva do objectabsurdo é tratado automaticamente.
Temporary_user_name
4
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.
usuário2357112 oferece suporte a Monica de
90

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.

Rafe Kettler
fonte