Tu Primera Clase
Las Clases son los planos arquitectónicos del código. Aprende a modelar el mundo real con Programación Orientada a Objetos.
1. El Problema que Resuelven las Clases
Imagina que necesitas gestionar 50 agentes de IA, cada uno con su propio nombre, modelo y historial de conversaciones. ¿Crearías 50 diccionarios separados? Eso se llama código espagueti.
Una Clase es como un molde o plantilla. La defines una vez y puedes crear los Objetos (instancias) que necesites a partir de ella, todos con la misma estructura pero datos propios.
2. Definir tu Primera Clase
Usamos la palabra clave class. Por convención, los nombres de clases usan PascalCase (cada palabra con mayúscula).
class AgenteIA:
"""Un agente de IA con nombre y modelo configurables."""
def __init__(self, nombre, modelo):
# self.atributo = valor
self.nombre = nombre
self.modelo = modelo
self.historial = [] # Cada agente tiene su propia historia
def responder(self, pregunta):
respuesta = f"[{self.nombre}] Procesando: {pregunta}"
self.historial.append(respuesta)
return respuesta
# Crear objetos (instancias) a partir de la clase
agente1 = AgenteIA("Atlas", "gpt-4o")
agente2 = AgenteIA("Nova", "claude-3-5-sonnet")
print(agente1.responder("¿Qué es el aprendizaje automático?"))
print(agente2.nombre) # Nova
3. El Método __init__: El Constructor
El método __init__ (con doble guion bajo) es especial. Se ejecuta automáticamente cada vez que creas un objeto nuevo. Es tu oportunidad de inicializar todos los datos que ese objeto necesita desde el principio.
self
El primer parámetro siempre es self. Es la forma en que el objeto se refiere a sí mismo. Python lo pasa automáticamente; tú nunca lo escribes al llamar al método.
Atributos de instancia
Son las variables con self. dentro del constructor. Cada objeto tiene sus propias copias: agente1.nombre es independiente de agente2.nombre.
4. Métodos: Las Acciones del Objeto
Los métodos son funciones definidas dentro de la clase. Operan sobre los datos del objeto usando self.
class AgenteIA:
def __init__(self, nombre, modelo):
self.nombre = nombre
self.modelo = modelo
self.historial = []
def responder(self, pregunta):
"""Genera una respuesta y la guarda en el historial."""
respuesta = f"[{self.modelo}]: Respuesta a '{pregunta}'"
self.historial.append(pregunta)
return respuesta
def ver_historial(self):
"""Muestra todas las preguntas anteriores."""
if not self.historial:
return "Sin conversaciones aún."
return "\n".join(self.historial)
def __repr__(self):
"""Representación legible del objeto."""
return f"AgenteIA(nombre='{self.nombre}', modelo='{self.modelo}')"
agente = AgenteIA("Atlas", "gpt-4o")
agente.responder("¿Qué son los transformers?")
agente.responder("¿Cómo funciona RLHF?")
print(agente.ver_historial())
print(agente) # Usa __repr__ automáticamente
¿Listo para convertirte en un Maestro?
Potencia tu carrera con el Máster Completo: Python de la A a la Z. Domina Ciencia de Datos, ML y Deep Learning.