Puedes ejecutar cualquier ejemplo de esta guía directamente en nuestra consola interactiva: Abrir consola de Python →
Clases y Objetos en Python: guía completa para entender la POO
La Programación Orientada a Objetos (POO) permite crear estructuras más organizadas, reutilizables y fáciles de mantener. En esta guía aprenderás qué son las clases, los objetos, atributos, métodos y cómo crear tus propias estructuras orientadas a objetos.
Tabla de contenidos
1. ¿Qué es una clase?
Una clase es un plano o plantilla para crear objetos. Define atributos (datos) y métodos (funciones).
class Persona:
pass
2. Objetos
Un objeto es una instancia de una clase.
class Persona:
pass
p = Persona()
print(p)
3. El método constructor (__init__)
El constructor inicializa los atributos del objeto.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
p = Persona("Iokelu", 25)
print(p.nombre, p.edad)
4. Métodos
Los métodos son funciones dentro de una clase.
class Persona:
def saludar(self):
print("Hola, soy una persona")
5. Atributos
Los atributos pueden ser:
- De instancia: propios de cada objeto
- De clase: compartidos por todos los objetos
class Persona:
especie = "Humano" # atributo de clase
def __init__(self, nombre):
self.nombre = nombre # atributo de instancia
6. Ejercicios
- Crear una clase Persona con nombre y edad.
- Crear un método saludar.
- Crear un atributo de clase.
- Crear una clase Coche con marca y modelo.
- Crear un método que muestre información del objeto.
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
class Persona:
def saludar(self):
print("Hola")
class Persona:
especie = "Humano"
class Coche:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
class Coche:
def info(self):
print(self.marca, self.modelo)
7. Mini‑proyecto: Sistema de usuarios
class Usuario:
def __init__(self, nombre, correo):
self.nombre = nombre
self.correo = correo
def mostrar_info(self):
print(f"Usuario: {self.nombre} - Email: {self.correo}")
u = Usuario("Iokelu", "correo@ejemplo.com")
u.mostrar_info()
8. Preguntas frecuentes
¿Las clases reemplazan las funciones?
No, son herramientas complementarias.
¿Puedo tener múltiples clases en un archivo?
Sí, es totalmente válido.