Métodos y Atributos
Domina la diferencia entre los datos que un objeto tiene (atributos) y las cosas que un objeto puede hacer (métodos).
1. Atributos: Los Datos del Objeto
Los atributos son variables que pertenecen a un objeto. Hay dos tipos principales:
Atributos de Instancia
Definidos en __init__ con self.. Cada objeto tiene su propia copia. Son los más comunes.
class Modelo:
def __init__(self, nombre):
self.nombre = nombre # Instancia
self.llamadas = 0 # Instancia
Atributos de Clase
Definidos fuera de __init__, al nivel del cuerpo de la clase. Compartidos por todos los objetos.
class Modelo:
proveedor = "OpenAI" # Clase (compartido)
def __init__(self, nombre):
self.nombre = nombre
2. Métodos: Las Acciones del Objeto
Los métodos son funciones definidas dentro de la clase. Siempre reciben self como primer argumento.
class AgenteIA:
total_agentes = 0 # Atributo de clase
def __init__(self, nombre, modelo):
self.nombre = nombre
self.modelo = modelo
self.activo = True
AgenteIA.total_agentes += 1
# Método de instancia (opera sobre self)
def activar(self):
self.activo = True
return f"{self.nombre} está activo."
def desactivar(self):
self.activo = False
return f"{self.nombre} ha sido desactivado."
def status(self):
estado = "Activo" if self.activo else "Inactivo"
return f"{self.nombre} ({self.modelo}): {estado}"
# Método de clase (opera sobre la clase, no sobre self)
@classmethod
def cuantos_agentes(cls):
return f"Agentes creados: {cls.total_agentes}"
# Método estático (no necesita self ni cls)
@staticmethod
def validar_nombre(nombre):
return len(nombre) > 0 and nombre.isidentifier()
# Uso
a1 = AgenteIA("Atlas", "gpt-4o")
a2 = AgenteIA("Nova", "claude-3-5-sonnet")
print(a1.status()) # Atlas (gpt-4o): Activo
print(a1.desactivar()) # Atlas ha sido desactivado.
print(AgenteIA.cuantos_agentes()) # Agentes creados: 2
print(AgenteIA.validar_nombre("mi_agente")) # True
3. Métodos Especiales (Dunder Methods)
Python tiene métodos con nombres especiales que empiezan y terminan con __ (doble guion bajo). Definen el comportamiento del objeto ante operaciones comunes.
| Método | Cuándo se llama |
|---|---|
__init__ |
Al crear el objeto (Agente("Atlas")) |
__repr__ |
Al imprimir o depurar el objeto |
__str__ |
Al convertir a string con str(objeto) |
__len__ |
Al llamar len(objeto) |
__eq__ |
Al comparar con == |
¿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.