2010-11-05 9 views
34

Y at-il une différence entredéfinition de la classe Python de syntaxe

class A: 
    ... 

et

class A(): 
    ... 

Je viens de réaliser que deux de mes classes sont définies comme l'ancien et ils travaillent très bien. Est-ce que les parenthèses vides font une différence?

Répondre

14

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, puisque plusieurs fonctionnalités utiles sont seulement disponibles avec new-style classes (dériver de object est optionnel dans Python 3.x, car les classes de style nouveau sont les options par défaut).

+4

Plus vrai dans python 3; tout ce qui dérive du non-sens de l'objet est pris en charge automatiquement. – Aerovistae

35

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és pour indiquer l'héritage, par exemple:

class A(baseClass): 
    ... 

En Python, la syntaxe préférée pour une classe déclaration sans classes de base est simplement:

class A: 
    ... 

N'utilisez pas de parenthèses sauf si vous sous-classez d'autres classes.

Le docs on the matter devrait vous permettre de mieux comprendre comment déclarer et utiliser des classes en Python.

Questions connexes