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?

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á).


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.