Y a-t-il une différence entre
class A:
...
y
class A():
...
Je viens de réaliser que plusieurs de mes classes sont définies comme telles et qu'elles fonctionnent parfaitement. Les parenthèses vides font-elles une différence ?
Y a-t-il une différence entre
class A:
...
y
class A():
...
Je viens de réaliser que plusieurs de mes classes sont définies comme telles et qu'elles fonctionnent parfaitement. Les parenthèses vides font-elles une différence ?
Bien qu'il ne soit pas 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 ex :
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.
Le site documents sur le sujet devrait vous permettre de mieux comprendre comment déclarer et utiliser les classes en Python.
Cette dernière est une erreur de syntaxe sur les anciennes versions de Python. Dans Python 2.x, vous devez dériver de object
dans la mesure du possible, car plusieurs fonctions utiles ne sont disponibles qu'avec l'option des classes d'un nouveau genre (dérivé de object
est facultative dans Python 3.x, puisque les classes de type nouveau sont utilisées par défaut).
Ce n'est plus vrai dans python 3 ; tout ce qui dérive de object
Les bêtises sont prises en charge automatiquement.
Était class A()
jamais une erreur de syntaxe ? Le site Documentation sur Python 1.4 disent que c'est bon, et ce sont les plus anciennes docs encore disponibles sur python.org.
Une définition de classe est un peu différente d'une définition de fonction/méthode.
Les parenthèses dans les définitions de classe servent à définir de quelle classe vous héritez. Vous n'écrivez pas def devant, et lorsque vous héritez de 'object', qui est la classe par défaut, vous n'avez pas besoin des parenthèses pour la définition.
Vous pouvez donc écrire l'un ou l'autre :
class C():
Ou :
class C:
Les définitions de fonctions/méthodes prennent toujours des parenthèses, même si vous ne définissez pas de paramètres. Si vous ne les utilisez pas, vous obtiendrez une SyntaxError.
Plus tard, après la définition d'une classe/fonction/méthode dans le code, le simple fait d'écrire le nom vous indiquera la classe/fonction/méthode.
Si vous voulez appeler ou accéder à l'un de ces éléments, vous aurez besoin de (), [], . ou autre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.