Gibt es einen Unterschied zwischen
class A:
...
und
class A():
...
Ich habe gerade festgestellt, dass einige meiner Klassen als die ersteren definiert sind und gut funktionieren. Macht die leere Klammer einen Unterschied?
Letzteres ist ein Syntaxfehler bei älteren Versionen von Python. In Python 2.x sollten Sie jedoch nach Möglichkeit ableiten object
, da einige nützliche Funktionen nur für Klassen neuen Stils verfügbar sind (das Ableiten von object
ist in Python 3.x optional, da dort Klassen neuen Stils die Standardeinstellung sind).
object
Unsinn entsteht, wird automatisch erledigt.class A()
jemals ein Syntaxfehler? Die Python 1.4-Dokumente sagen, dass es in Ordnung ist, und dies sind die ältesten Dokumente, die noch auf python.org verfügbar sind.Während es möglicherweise nicht syntaktisch falsch ist, die leeren Klammern in einer Klassendefinition zu verwenden, werden Klammern nach einer Klassendefinition verwendet, um die Vererbung anzuzeigen, z.
class A(baseClass): ...
In Python lautet die bevorzugte Syntax für eine Klassendeklaration ohne Basisklassen einfach:
class A: ...
Verwenden Sie keine Klammern, es sei denn, Sie unterordnen andere Klassen.
Die Dokumente zu diesem Thema sollen Ihnen ein besseres Verständnis dafür vermitteln, wie Klassen in Python deklariert und verwendet werden.
quelle