Orientación a Objetos
Deja de pensar en funciones sueltas y empieza a modelar el mundo. Crea tus propios tipos de datos (Clases) que agrupan información (Atributos) y comportamiento (Métodos).
1. El Plano vs El Objeto
Una Clase es como el plano de un arquitecto o el molde de una fábrica. Define la estructura. Un Objeto (o Instancia) es la casa construida o el auto fabricado. Puedes crear infinitos objetos distintos usando la misma clase.
"Todo auto tendrá marca, motor y color".
(Es solo una idea, no existe físicamente)
- - Jeep (Rojo, 24V)
- - Toyota (Blanco, 16V)
2. El Constructor (__init__)
Es la función especial que se ejecuta automáticamente al "nacer" el objeto. Aquí usamos self para guardar los datos propios de esa instancia específica.
self.color = color
mi_auto = Auto("Jeep", "Rojo")
print(mi_auto.color) - "Rojo"
3. Métodos y Self
Los objetos no son solo datos; también hacen cosas. Los métodos son funciones dentro de la clase. El método mágico __str__ define cómo se "ve" el objeto al imprimirlo.
return "Soy " + self.nombre
return self.apellido + "," + self.nombre
Ejemplo de su uso:
4. Composición Avanzada
Un atributo puede ser cualquier cosa: un número, un string... ¡o una lista de otros objetos! Esto permite modelar sistemas complejos como un Aeropuerto que contiene una lista de Vuelos.
v1 = Vuelo("Jamaica")
scl.vuelos.append(v1) # Guardamos el OBJETO, no un string