Module (44%)
Section (46%)

Cómo Python encuentra propiedades y métodos: continuación

Ahora es posible formular una declaración general que describa el comportamiento de Python.

Cuando intentes acceder a una entidad de cualquier objeto, Python intentará (en este orden):

  • Encontrarla dentro del objeto mismo.
  • Encontrarla en todas las clases involucradas en la línea de herencia del objeto de abajo hacia arriba.

Si ambos intentos fallan, una excepción (AttributeError) será lanzada.


La primera condición puede necesitar atención adicional. Como sabes, todos los objetos derivados de una clase en particular pueden tener diferentes conjuntos de atributos, y algunos de los atributos pueden agregarse al objeto mucho tiempo después de la creación del objeto.

El ejemplo en el editor resume esto en una línea de herencia de tres niveles. Analízalo cuidadosamente.

Todos los comentarios que hemos hecho hasta ahora están relacionados con casos de herencia única, cuando una subclase tiene exactamente una superclase. Esta es la situación más común (y también la recomendada).

Python, sin embargo, ofrece mucho más aquí. En las próximas lecciones te mostraremos algunos ejemplos de herencia múltiple.



Code

class Nivel1:
varia1 = 100
def __init__(self):
self.var1 = 101

def fun1(self):
return 102


class Nivel2(Nivel1):
varia2 = 200
def __init__(self):
super().__init__()
self.var2 = 201

def fun2(self):
return 202


class Nivel3(Nivel2):
varia3 = 300
def __init__(self):
super().__init__()
self.var3 = 301

def fun3(self):
return 302


obj = Nivel3()

print(obj.varia1, obj.var1, obj.fun1())
print(obj.varia2, obj.var2, obj.fun2())
print(obj.varia3, obj.var3, obj.fun3())
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×