2010-08-02 14 views
26

Así que estoy aprendiendo python (sé muchos otros idiomas) y estoy confundido acerca de algo. Creo que esto se debe a la falta de documentación (al menos eso pude encontrar). En unos pocos sitios web, He leído que usted debe derivar sus clases de object:Derivando clase de `objeto` en python

 

class Base(object): 
    pass 
 

Pero no veo lo que hace o por qué o cuándo debe hacerlo. ¿Hay documentación oficial sobre esto que me he perdido? ¿Es esta una característica 3.x?

+0

Miré aquí http://docs.python.org/tutorial/classes.html – Falmarri

Respuesta

22

Sobre todo no es va a importar si heredas o no de un objeto, pero si no lo haces, hay errores esperando para atraparte cuando hayas olvidado que decidiste no molestarte.

Algunas cosas sutiles simplemente no funcionarán correctamente si no en última instancia hereda de objeto:

  1. utilización de las propiedades en las clases de clásico que funciona sólo en parte: get obras bien, pero set hace cosas extrañas.
  2. La herencia múltiple se comporta de manera diferente en las clases clásicas que en las clases derivadas del objeto.
  3. También la herencia múltiple no funcionará si intenta mezclar clases clásicas con aquellos objetos de la subclase. Hagas lo que hagas, quieres ser consistente.

Algunas personas pueden seguir utilizando las clases clásicas excepto cuando necesiten el nuevo comportamiento, otras dicen que siempre usen nuevas clases de estilo para evitar dispararse más tarde en el pie. Si está trabajando en un proyecto para una sola persona, haga lo que sea bueno para usted; si es un proyecto compartido, sea consistente con los otros desarrolladores.

+2

Gracias, eso aclara mucho. Desearía que esto estuviera mejor documentado – Falmarri

2

En Python 3, las clases amplían el objeto implícitamente, ya sea que usted lo diga o no.

Ver here.

Cuestiones relacionadas