/Clases y Objetos

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).

architecture

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.

description class Auto

"Todo auto tendrá marca, motor y color".

(Es solo una idea, no existe físicamente)

directions_car Instancias
  • - Jeep (Rojo, 24V)
  • - Toyota (Blanco, 16V)
fingerprint

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.

init.pyPython
class Auto:
def __init__(self, marca, color):
self.marca = marca # Atributo público
self.color = color
# Creando el objeto (Instanciación)
mi_auto = Auto("Jeep", "Rojo")
print(mi_auto.color) - "Rojo"
settings_accessibility

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.

metodos.pyPython
def saludo(self):
    return "Soy " + self.nombre
def __str__(self):
    return self.apellido + "," + self.nombre

Ejemplo de su uso:

uso_metodos.pyPython
# 1. Creamos la instancia
p1 = Persona("Ada", "Lovelace")
# 2. Llamada al método normal
print(p1.saludo())# Output: "Soy Ada"
# 3. Al imprimir el objeto, Python busca __str__
print(p1)# Output: "Lovelace, Ada"
hub

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.

connecting_airportsAeropuerto
.vuelos (Lista)
V1
V2
vuelos.pyPython
# Aeropuerto contiene objetos Vuelo
scl = Aeropuerto("Chile")
v1 = Vuelo("Jamaica")

scl.vuelos.append(v1) # Guardamos el OBJETO, no un string
Cargando Quiz...

Labs Disponibles

factory

Fábrica de Objetos

play_circleIniciar Lab