Module (46%)
Section (48%)

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.



Code

class Nivel1:
var = 100
def fun(self):
return 101

class Nivel2:
var = 200
def fun(self):
return 201

class Nivel3(Nivel2):
pass

obj = Nivel3()

print(obj.var, obj.fun())
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×