Saltearse al contenido

Métodos y atributos

Ahora que ya sabes qué es una clase y cómo crear objetos, es momento de profundizar en dos conceptos clave: atributos y métodos. Estos son los componentes fundamentales que le dan funcionalidad y características a tus objetos.


Los atributos son variables que almacenan información sobre el estado de un objeto. Cada objeto puede tener valores diferentes para sus atributos.

Atributos de instancia
class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad
p1 = Persona('Ana', 30)
print(p1.nombre) # Ana
print(p1.edad) # 30

En este ejemplo, nombre y edad son atributos de cada objeto Persona.


Los métodos son funciones definidas dentro de una clase que describen los comportamientos de los objetos. Siempre reciben al menos un parámetro: self, que representa al propio objeto.

Método de instancia
class Persona:
    def __init__(self, nombre):
        self.nombre = nombre
    def saludar(self):
        print(f'Hola, soy {self.nombre}!')
p1 = Persona('Ana')
p1.saludar() # Hola, soy Ana!

  • Atributos de instancia: Son propios de cada objeto (como self.nombre).
  • Atributos de clase: Son compartidos por todas las instancias de la clase.
Atributos de clase e instancia
class Mascota:
    especie = 'Perro' # Atributo de clase
    def __init__(self, nombre):
        self.nombre = nombre # Atributo de instancia
m1 = Mascota('Rex')
m2 = Mascota('Luna')
print(m1.especie) # Perro
print(m2.especie) # Perro

  • Métodos de instancia: Usan self y operan sobre el objeto.
  • Métodos de clase: Usan @classmethod y reciben cls como primer parámetro.
  • Métodos estáticos: Usan @staticmethod y no reciben ni self ni cls.
Métodos estáticos y de clase
class Calculadora:
    @staticmethod
    def sumar(a, b):
        return a + b
    @classmethod
    def descripcion(cls):
        return 'Calculadora simple'
print(Calculadora.sumar(3, 4)) # 7
print(Calculadora.descripcion()) # Calculadora simple

  • Usa nombres descriptivos para atributos y métodos.
  • Los atributos privados (solo para uso interno) se nombran con un guion bajo: _atributo.
  • Documenta tus métodos usando docstrings.

  • Atributos: almacenan información del objeto.
  • Métodos: definen comportamientos del objeto.
  • Existen atributos y métodos de instancia, de clase y estáticos.
  • Dominar estos conceptos te permite crear clases más útiles y flexibles.

¿Listo para seguir? ¡Intenta crear una clase con atributos y métodos propios!