Inicio > Cursos > Python > Clases y Objetos
PythonProgramación Orientada a ObjetosLección 13 de 24

Clases y Objetos

Python es multiparadigma: puedes programar de forma procedural, funcional o orientada a objetos según lo que más convenga. Las clases en Python son muy expresivas. El decorador @property permite definir getters y setters con sintaxis de atributo, @classmethod crea métodos que reciben la clase en lugar de la instancia, y @staticmethod crea métodos que no dependen ni de la instancia ni de la clase.

class Vehiculo:
    # Atributo de clase (compartido)
    ruedas = 4
    
    def __init__(self, marca, modelo, anio):
        # Atributos de instancia
        self.marca = marca
        self.modelo = modelo
        self.anio = anio
        self.__velocidad = 0  # Privado (name mangling)
    
    def acelerar(self, cantidad):
        self.__velocidad += cantidad
    
    # Property (getter/setter elegante)
    @property
    def velocidad(self):
        return self.__velocidad
    
    @velocidad.setter
    def velocidad(self, valor):
        if valor < 0:
            raise ValueError("La velocidad no puede ser negativa")
        self.__velocidad = valor
    
    # Método especial (dunder)
    def __str__(self):
        return f"{self.marca} {self.modelo} ({self.anio})"
    
    def __repr__(self):
        return f"Vehiculo(marca={self.marca!r}, modelo={self.modelo!r})"
    
    @classmethod
    def desde_string(cls, texto):
        partes = texto.split(",")
        return cls(partes[0], partes[1], int(partes[2]))
    
    @staticmethod
    def es_anio_valido(anio):
        return 1886 <= anio <= 2030

auto = Vehiculo("Toyota", "Corolla", 2023)
print(auto)         # Toyota Corolla (2023)
print(auto.velocidad)  # 0
auto.velocidad = 60 # Usa setter
Consejo🔍 Los métodos dunder (__str__, __repr__, __len__, etc.) son la forma de Python para operadores y comportamientos especiales.
← Dataclasses y ProtocolsHerencia y Polimorfismo →

Practica esta lección

Resuelve los ejercicios del curso de Python en la app, gratis y con corrección automática.

Empezar a practicar