Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python desde cero - enfoque científico, Unidad 9 — Introducción a objetos (sin profundizar), 9.2 — Clases básicas ·

Atributos y métodos

Atributos y métodos

Introducción

Las clases son una parte fundamental del paradigma orientado a objetos (OO) en Python. En el contexto científico, las clases nos permiten modelar estructuras de datos complejas que representan conceptos concretos o fenómenos del mundo real. Al comprender cómo trabajar con atributos y métodos dentro de estas clases, podemos crear programas más claros y reutilizables.

Explicación principal

Un atributo es una variable asociada a una clase. Al igual que las variables en el ámbito global o local, los atributos almacenan datos relacionados con la clase y sus instancias. Un método, por otro lado, es una función definida dentro de una clase. Los métodos definen comportamientos para instancias de la clase.

A continuación, te presentamos un ejemplo básico:

class Circulo:
    def __init__(self, radio):
        self.radio = radio  # Atributo

    def calcular_area(self):  # Método
        return 3.14 * (self.radio ** 2)

En este ejemplo, radio es un atributo y calcular_area() es un método de la clase Circulo.

Ejemplo práctico: Clase "Persona"

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

    def cumpleaños(self):  # Método
        self.edad += 1
        return f"Feliz cumpleaños {self.nombre}! Ahora tienes {self.edad} años."

# Crear una instancia de Persona
persona1 = Persona("Ana", 25)
print(persona1.cumpleaños())  # Output: Feliz cumpleaños Ana! Ahora tienes 26 años.

Errores típicos / trampas

Trampa 1: Confundir atributos con métodos

Problema: Crear un método cuando en realidad necesitas un atributo.

class Circulo:
    def __init__(self, radio):
        self.calcular_area()  # Este es un error

    def calcular_area(self):  # Método, no debería ser llamado automáticamente
        return 3.14 * (self.radio ** 2)

# La solución correcta sería:
class Circulo:
    def __init__(self, radio):
        self.radio = radio  # Atributo

    def calcular_area(self):  # Método
        return 3.14 * (self.radio ** 2)

Trampa 2: Olvidar el self en métodos de instancia

Problema: No incluir self como primer parámetro en los métodos.

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

    def cumpleaños():  # Falta el 'self'
        print(f"Feliz cumpleaños {nombre}! Ahora tienes {edad} años.")

# La solución correcta sería:
class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

    def cumpleaños(self):  # Método con 'self'
        print(f"Feliz cumpleaños {self.nombre}! Ahora tienes {self.edad} años.")

Trampa 3: Usar métodos estáticos inapropiadamente

Problema: Usar un método estático cuando deberías usar uno de instancia o viceversa.

class Circulo:
    @staticmethod
    def calcular_area(radio):
        return 3.14 * (radio ** 2)

# La solución correcta sería:

class Circulo:
    def __init__(self, radio):
        self.radio = radio

    def calcular_area(self):  # Método de instancia
        return 3.14 * (self.radio ** 2)

Checklist accionable

  • Verifica que todos los atributos sean declarados en el constructor __init__.
  • Asegúrate de usar self como primer parámetro en los métodos de instancia.
  • Evita la confusión entre atributos y métodos, especialmente cuando necesitas calcular algo dinámico.
  • Usa métodos estáticos solo para funciones que no dependan de ningún atributo de la clase.

Siguientes pasos

  • Aprende a usar herencia: Este concepto te permitirá crear clases basadas en otras clases existentes, reutilizando y extendiendo el código.
  • Descubre cómo trabajar con métodos estáticos e estáticos: Estos son útiles para funciones que no dependen de atributos específicos de una instancia.
  • Explora los decoradores: Estos te permiten modificar o "decorar" funciones y métodos, añadiendo funcionalidad sin alterar el código existente.

Aprender a trabajar con atributos y métodos es un paso importante en la programación orientada a objetos. Con estos fundamentos, podrás modelar estructuras de datos complejas y crear programas más reutilizables y claros.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).