Frogames Python Expert
Cursos Premium

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.

Ver ahora