Constructor y self en Python

¿Qué es una clase?

Una clase es como un plano o plantilla. Igual que un plano sirve para construir muchas casas, una clase sirve para crear muchos objetos.

¿Qué es un objeto?

Un objeto es algo creado a partir de una clase. Si la clase es el plano, el objeto es la casa construida.

¿Qué es el constructor __init__()?

El constructor es un método especial que se ejecuta automáticamente cuando creas un objeto. Su misión es preparar el objeto y darle sus primeros datos.

Piensa en él como el momento en que una casa recién construida recibe sus muebles iniciales.

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

¿Qué significa self?

self significa literalmente: "este objeto que se está creando ahora mismo".

Gracias a self, el objeto puede guardar información dentro de sí mismo.

Si no existiera self, Python no sabría a qué objeto pertenecen los datos.

self.nombre = nombre   # Guarda el nombre dentro del objeto
self.edad = edad       # Guarda la edad dentro del objeto

Ejemplo completo explicado paso a paso

p = Persona("Ana", 30)
Paso 1: Se llama al constructor __init__().
Paso 2: Python crea un nuevo objeto vacío.
Paso 3: self apunta a ese nuevo objeto.
Paso 4: Se guardan los datos: self.nombre = "Ana" self.edad = 30
Paso 5: El objeto ya está listo y se guarda en la variable p.

Tabla resumen

Concepto Explicación clara
Clase Un plano o plantilla para crear objetos.
Objeto Una cosa creada a partir de una clase.
Constructor __init__ Se ejecuta al crear un objeto y lo prepara.
self El propio objeto; permite guardar datos dentro de él.