objects learn functions constructors classes and python class python-2.7 new-style-class

learn - ¿Clases de estilo antiguo y nuevo en Python 2.7?



this in python class (2)

Posible duplicado:
Estilo antiguo y nuevas clases de estilo en Python.

¿Cuál es la situación actual con las clases de estilo nuevo y estilo antiguo en Python 2.7? No trabajo con Python a menudo, pero recuerdo vagamente el problema. La documentación no parece mencionar el problema en absoluto: El tutorial de Python: Clases . ¿Todavía tengo que preocuparme por esto? En general debo declarar mis clases como:

class MyClass: pass

¿o?

class MyClass(object): pass


Siempre debes usar nuevas clases de estilo. Las clases de nuevo estilo son parte de un esfuerzo por unificar los tipos incorporados y las clases definidas por el usuario en el lenguaje de programación Python.

Las nuevas clases de estilo tienen varias cosas que ofrecer, tales como:

  • Propiedades: Atributos que están definidos por los métodos get / set
  • Métodos estáticos y métodos de clase.
  • El nuevo gancho getattribute , que, a diferencia de getattr , se llama para cada acceso de atributo, no solo cuando el atributo no se puede encontrar en la instancia
  • Descriptores: Un protocolo para definir el comportamiento del acceso de atributos a través de objetos.
  • Anulando el constructor nuevo
  • Metaclases

Source.


Siempre subclase "objeto". Esas son nuevas clases de estilo.

  • Estás listo para Python 3 de esa manera.

  • Cosas como .super() funcionan correctamente de esa manera, en caso de que las necesite.