Sintassi della definizione della classe Python


95

C'è una differenza tra

class A:
    ...

e

class A():
    ...

Mi sono appena reso conto che un paio delle mie classi sono definite le prime e funzionano perfettamente. La parentesi vuota fa la differenza?

Risposte:


23

Quest'ultimo è un errore di sintassi nelle versioni precedenti di Python. In Python 2.x dovresti derivare da objectogni volta che è possibile, poiché molte utili funzionalità sono disponibili solo con le classi di nuovo stile (derivare da objectè facoltativo in Python 3.x, poiché le classi di nuovo stile sono l'impostazione predefinita lì).


7
Non è più vero in Python 3; tutto ciò che deriva dalle objectsciocchezze viene curato automaticamente.
temporary_user_name

4
C'è class A()mai stato un errore di sintassi? I documenti di Python 1.4 dicono che va bene e quelli sono i documenti più vecchi ancora disponibili su python.org.
user2357112 supporta Monica

90

Anche se potrebbe non essere sintatticamente errato utilizzare le parentesi vuote in una definizione di classe, le parentesi dopo una definizione di classe vengono utilizzate per indicare l'ereditarietà, ad esempio:

class A(baseClass):
    ...

In Python, la sintassi preferita per una dichiarazione di classe senza classi di base è semplicemente:

class A:
    ...

Non usare le parentesi a meno che tu non stia sottoclassando altre classi.

La documentazione in materia dovrebbe darti una migliore comprensione di come dichiarare e usare le classi in Python.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.