2010-11-05 15 views
34

¿Hay una diferencia entrePython sintaxis de definición de clase

class A: 
    ... 

y

class A(): 
    ... 

me he dado cuenta de que un par de mis clases se definen como los primeros y que funciona muy bien. ¿Los paréntesis vacíos hacen alguna diferencia?

Respuesta

14

Este último es un error de sintaxis en versiones anteriores de Python. En Python 2.x debe derivar de object siempre que sea posible, ya que varias funciones útiles solo están disponibles con new-style classes (derivado de object es opcional en Python 3.x, ya que las clases de estilo nuevo son las predeterminadas).

+4

Ya no es cierto en python 3; todo lo que se deriva de tonterías de 'objeto' se atiende automáticamente. – Aerovistae

35

Aunque puede que no sea sintácticamente incorrecto utilizar los paréntesis vacíos en una definición de clase, los paréntesis después de una definición de clase se utilizan para indicar la herencia, por ejemplo:

class A(baseClass): 
    ... 

En Python, la sintaxis preferida para una clase declaración sin ninguna clase de base es simplemente:

class A: 
    ... 

No utilice paréntesis a menos que esté subclasificando otras clases.

El docs on the matter debería darle una mejor comprensión de cómo declarar y usar clases en Python.

Cuestiones relacionadas