Saltar al contenido

super()

Python · Unidad 13: Herencia

Si la hija escribe su propio __init__, ese reemplaza al de la madre: el de la madre ya no corre, y lo que guardaba no se guarda.

class Animal:
    def __init__(self, nom):
        self.nom = nom

class Perro(Animal):
    def __init__(self, raza):
        self.raza = raza

p = Perro("pug")
print(p.raza)
try:
    print(p.nom)
except AttributeError:
    print("No tiene nom")

Imprime

pug
No tiene nom

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Predice la salida

    ¿Qué imprime este código?

  2. 2. Opción múltiple

    Con este código, print(p.nom) da AttributeError. ¿Por qué?

  3. 3. Completa el código

    Completa para que el perro guarde también su nombre.

  4. 4. Completa el código

    Completa para que imprima: Valeria 3B

  5. 5. Predice la salida

    ¿Qué imprime este código?

  6. 6. Encuentra el bug

    Este programa debería imprimir Luis Mate. ¿Qué línea tiene el error?

  7. 7. Opción múltiple

    En vez de super().__init__(nom), la hija podría escribir otra vez self.nom = nom. ¿Por qué conviene super()?

  8. 8. Ordena las líneas

    Un pan en oferta cuesta 30 menos 5 de descuento. Ordena para que imprima 25.

  9. 9. Predice la salida

    ¿Qué imprime este código?

  10. 10. Escribe el código

    Escribe el __init__ de Alumno: que reciba nom y esc, guarde el nombre con super() y guarde la escuela en self.escuela. Debe imprimir Leo Prepa 2.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →