Clases y objetos desde cero
Hasta ahora organizaste tu código en funciones. El siguiente paso es organizar datos y comportamiento juntos, dentro de una misma unidad: eso es una clase. Esta guía es un mapa, no una lista de secciones: hacé clic en cualquier nodo, en el orden que prefieras. El recomendado es 1→7, pero no está bloqueado.
¿Todavía no tenés claro qué es una clase o un objeto, sin pensar en código? Empezá por Clase, objeto y sus amigos —la misma idea con personajes de videojuego y planos de casa, sin una sola línea de Python.
Los nodos marcados editor tienen Python real corriendo en tu navegador (Pyodide). Un nodo queda marcado en la ruta cuando ya lo practicaste.
Fac. de Ingeniería de Sistemas · UAB
— vistas
La ruta
siete nodos en orden sugerido · tocá cualquiera para abrirloAntes de escribir una clase de cero, ordená esta: alguien mezcló las líneas de una clase Auto.
Usá las flechas ↑ ↓ de cada bloque hasta dejar la clase en el orden correcto, y después presioná "Verificar orden".
- self.marca = marca
- class Auto:
- def arrancar(self):
- def __init__(self, marca, modelo):
- self.modelo = modelo
- print(self.marca, "está arrancando")
Ahora escribí una clase parecida, de cero:
__init__(self, nombre, edad)que guarde ambos como atributos.- Un método
saludar(self)que imprima"Hola, soy " + self.nombre. - Un método
cumplir_anios(self)que le sume 1 aself.edad. - Creá un objeto y probá los dos métodos, imprimiendo la edad antes y después.
Cheat sheet
| Uso | Ejemplo |
|---|---|
| Definir una clase | class Nombre: ... |
| Crear un objeto | objeto = Nombre(argumentos) |
| Constructor | def __init__(self, ...): ... |
| Guardar un atributo | self.atributo = valor |
| Leer un atributo | objeto.atributo |
| Definir un método | def nombre_metodo(self, ...): ... |
| Llamar un método | objeto.nombre_metodo(argumentos) |
| self | Primer parámetro de todo método; Python lo pasa solo |
¿Sabías que…?
De dónde viene la idea
Los conceptos de "clase" y "objeto" nacieron en Simula 67, un lenguaje noruego pensado para simulaciones, décadas antes de que la Programación Orientada a Objetos se volviera popular.
En Python, todo es un objeto
Un número, un texto o una lista también son instancias de una clase (int, str, list), aunque nunca hayas escrito class para usarlos.
Atributos "privados" (más adelante)
Anteponer _ o __ al nombre de un atributo es una convención para señalar "no lo toques desde afuera" —el tema de encapsulación de una guía futura.