IOKELU
Nivel: Intermedio
💡 Prueba el código:
Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →

Métodos especiales en Python: cómo funcionan los métodos mágicos

Los métodos especiales, también llamados métodos mágicos, permiten que tus clases se comporten como tipos nativos de Python. En esta guía aprenderás a usar métodos como __init__, __str__, __len__, __add__ y más.

1. ¿Qué son los métodos especiales?

Son métodos que comienzan y terminan con doble guion bajo. Python los usa para operaciones internas como imprimir, sumar, comparar o convertir objetos.

class Persona:
    def __init__(self, nombre):
        self.nombre = nombre

2. __str__ y __repr__

Controlan cómo se muestra un objeto cuando se imprime.

class Persona:
    def __init__(self, nombre):
        self.nombre = nombre

    def __str__(self):
        return f"Persona: {self.nombre}"

p = Persona("Iokelu")
print(p)

3. __len__

Permite usar la función len() en tus objetos.

class Grupo:
    def __init__(self, personas):
        self.personas = personas

    def __len__(self):
        return len(self.personas)

g = Grupo(["Ana", "Luis", "Iokelu"])
print(len(g))

4. __add__

Permite usar el operador + entre objetos.

class Numero:
    def __init__(self, valor):
        self.valor = valor

    def __add__(self, otro):
        return Numero(self.valor + otro.valor)

a = Numero(5)
b = Numero(7)
c = a + b
print(c.valor)

5. Métodos de comparación

class Persona:
    def __init__(self, edad):
        self.edad = edad

    def __lt__(self, otro):
        return self.edad < otro.edad

6. Ejercicios

7. Mini‑proyecto: Clase avanzada con métodos mágicos

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"({self.x}, {self.y})"

    def __add__(self, otro):
        return Vector(self.x + otro.x, self.y + otro.y)

v1 = Vector(2, 3)
v2 = Vector(4, 1)
print(v1 + v2)

8. Preguntas frecuentes

¿Debo usar métodos mágicos siempre?

Solo cuando quieras que tu clase se comporte como un tipo nativo.

¿Puedo crear mis propios métodos mágicos?

No, solo puedes usar los que Python define.


Siguiente guía

List Comprehensions en Python →