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:
Quest'ultimo è un errore di sintassi nelle versioni precedenti di Python. In Python 2.x dovresti derivare da object
ogni 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ì).
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.
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.
object
sciocchezze viene curato automaticamente.