Cargando...

Métodos especiales

Con print(guest), el primer programa escribe badge mira en la pantalla. Un método especial hace que el propio Badge responda a print o a len. El nombre mira se guarda en un Badge; no se instala ningún paquete ni se crea ninguna carpeta. La línea print(guest) es la que ejecuta str, así que tú no escribes guest.str() en el programa. Al escribir Badge("mira") se ejecuta init, y self es ese badge. str devuelve las palabras "badge " más el nombre, con un solo espacio entre badge y mira. Quien las escribe en pantalla es print.

print ejecuta __str__

python
class Badge:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return "badge " + self.name

guest = Badge("mira")
print(guest)

En la pantalla aparece una sola línea: badge mira. Lo guardado es solo mira; la palabra badge del principio la añade str. La línea la escribe print. Si quitaras print del programa, la pantalla quedaría vacía, porque devolver las palabras no es lo mismo que escribirlas. guest.str() no está en el programa: basta con print(guest) para ejecutar ese método especial. Un Badge sin str no escribiría badge mira, sino una línea con el nombre del patrón y un lugar de la memoria. None no se escribe.

len ejecuta __len__

python
class Badge:
    def __init__(self, name):
        self.name = name
    def __len__(self):
        return len(self.name)

guest = Badge("mira")
print(len(guest))

El segundo programa es independiente del primero. Su pantalla muestra el entero 4, no badge mira ni mira. mira tiene cuatro letras: m, i, r, a. Por eso len devuelve 4 y print lo escribe. No hay punto decimal, y el nombre guardado no lleva ningún espacio. Este programa no define str, así que tampoco escribe badge mira. Si faltara len, len(guest) se detendría con un TypeError. None no se escribe y el programa no sigue adelante. Esa línea que falla no está en el programa.

📊 Lo que escribes y lo que muestra la pantalla

Lo que escribes Lo que muestra la pantalla
print(guest) badge mira
print(len(guest)) 4
len(guest) sin __len__ el programa se detiene

En la página siguiente verás un objeto dentro de otro objeto. Esta página solo muestra dos métodos especiales en un único badge llamado mira.

Dos respuestas de un badge

print(guest) escribe badge mira porque se ejecuta str. print(len(guest)) escribe 4 porque se ejecuta len. El 4 es el número de letras de mira. Detrás de esos nombres especiales no pones paréntesis. La página siguiente coloca un objeto dentro de otro objeto.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
5
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior