Y a-t-il une différence entre
class A:
...
et
class A():
...
Je viens de réaliser que quelques-uns de mes cours sont définis comme les premiers et qu'ils fonctionnent très bien. Les parenthèses vides font-elles une différence?
Ce dernier est une erreur de syntaxe sur les anciennes versions de Python. Dans Python 2.x, vous devriez dériver de object
chaque fois que possible, car plusieurs fonctionnalités utiles ne sont disponibles qu'avec les classes de nouveau style (dériver de object
est facultatif dans Python 3.x, car les classes de nouveau style sont la valeur par défaut).
object
non-sens est pris en charge automatiquement.class A()
déjà eu une erreur de syntaxe? Les documents Python 1.4 disent que tout va bien, et ce sont les documents les plus anciens encore disponibles sur python.org.Bien qu'il puisse ne pas être syntaxiquement incorrect d'utiliser les parenthèses vides dans une définition de classe, les parenthèses après une définition de classe sont utilisées pour indiquer l'héritage, par exemple:
class A(baseClass): ...
En Python, la syntaxe préférée pour une déclaration de classe sans aucune classe de base est simplement:
class A: ...
N'utilisez pas de parenthèses à moins que vous ne sous-classiez d'autres classes.
La documentation sur le sujet devrait vous donner une meilleure compréhension de la façon de déclarer et d'utiliser des classes en Python.
la source