¿Hay alguna diferencia entre
class A:
...
y
class A():
...
Me acabo de dar cuenta de que un par de mis clases se definen como las primeras y funcionan bien. ¿El paréntesis vacío hace alguna diferencia?
Respuestas:
Este último es un error de sintaxis en versiones anteriores de Python. Sin object
embargo, en Python 2.x debe derivar siempre que sea posible, ya que varias características útiles solo están disponibles con clases de nuevo estilo (derivar de object
es opcional en Python 3.x, ya que las clases de nuevo estilo son las predeterminadas allí).
class A()
Alguna vez fue un error de sintaxis? Los documentos de Python 1.4 dicen que está bien, y esos son los documentos más antiguos que aún están disponibles en python.org.
Si bien puede que no sea sintácticamente incorrecto usar los paréntesis vacíos en una definición de clase, los paréntesis después de una definición de clase se usan para indicar herencia, por ejemplo:
class A(baseClass):
...
En Python, la sintaxis preferida para una declaración de clase sin clases base es simplemente:
class A:
...
No use paréntesis a menos que esté subclasificando otras clases.
Los documentos sobre el tema deberían brindarle una mejor comprensión de cómo declarar y usar clases en Python.
object
tonterías se soluciona automáticamente.