Saltar al contenido principal

Clases y Objetos en Python

La Programación Orientada a Objetos (POO) es un paradigma de programación asombrosamente poderoso. Permite empaquetar datos (características) y comportamientos (acciones) juntos en estructuras llamadas Clases, y luego crear "copias" independientes de estas estructuras llamadas Objetos.

¿Qué es una Clase?

Imagina una clase como un "molde", un "plano" o una "receta". Define qué características tendrá algo, pero no es ese algo en sí mismo.

En Python, definimos una clase con la palabra clave class.

class Perro:
# Esto es el método "constructor" (se ejecuta al crear un nuevo objeto)
def __init__(self, nombre, raza, edad):
# self.nombre es un ATRIBUTO (una característica que guarda el objeto)
self.nombre = nombre
self.raza = raza
self.edad = edad

# Esto es un MÉTODO (una acción que puede hacer el objeto)
def ladrar(self):
print(f"Woof! Soy {self.nombre}")

def cumplir_anos(self):
self.edad += 1
print(f"Feliz cumpleaños {self.nombre}! Ahora tienes {self.edad} años.")

Explicando __init__ y self

  • __init__: Es un método especial (el constructor). Python lo llama automáticamente cada vez que creas un nuevo objeto de esa clase.
  • self: Es una referencia al objeto exacto que se está creando o utilizando en ese momento. Es obligatorio como primer parámetro en todos los métodos de una clase.

¿Qué es un Objeto?

Un objeto es una "instancia" (una creación concreta) hecha a partir del molde de la Clase. Puedes crear infinitos objetos de una sola clase, y cada uno guardará su propia información independiente.

# Creando "instancias" (Objetos) de la clase Perro
perro1 = Perro("Firulais", "Golden Retriever", 3)
perro2 = Perro("Rex", "Pastor Alemán", 5)

# Accediendo a los Atributos (características)
print(perro1.nombre) # Salida: Firulais
print(perro2.raza) # Salida: Pastor Alemán

# Ejecutando Métodos (acciones)
perro1.ladrar() # Salida: Woof! Soy Firulais
perro2.cumplir_anos() # Salida: Feliz cumpleaños Rex! Ahora tienes 6 años.

Beneficios de las Clases

  1. Modelar el mundo real: Si estás programando un juego, en lugar de tener 50 variables sueltas, puedes tener un solo objeto Guerrero.
  2. Reutilización: Defines el código una vez y lo usas para crear miles de objetos diferentes sin repetir la lógica.