Cómo Python encuentra propiedades y métodos: continuación
Analicemos el ejemplo en el editor.
Tanto la clase Nivel1
como la Nivel2
definen un método llamado fun()
y una propiedad llamada var
. ¿Significará esto el objeto de la clase Nivel3
podrá acceder a dos copias de cada entidad? De ningún modo.
La entidad definida después (en el sentido de herencia) anula la misma entidad definida anteriormente. Es por eso que el código produce el siguiente resultado:
200 201
Como puedes ver, la variable de clase var
y el método fun()
de la clase Nivel2
anula las entidades de los mismos nombres derivados de la clase Nivel1
.
Esta característica se puede usar intencionalmente para modificar el comportamiento predeterminado de las clases (o definido previamente) cuando cualquiera de tus clases necesite actuar de manera diferente a su ancestro.
También podemos decir que Python busca una entidad de abajo hacia arriba, y está completamente satisfecho con la primera entidad del nombre deseado que encuentre.
¿Qué ocurre cuando una clase tiene dos ancestros que ofrecen la misma entidad y se encuentran en el mismo nivel? En otras palabras, ¿Qué se debe esperar cuando surge una clase usando herencia múltiple? Miremos lo siguiente.