Problemas de cierre de POO en Python — Pon en código lo que aprendiste
Cuatro ejercicios de repaso de POO en Python: métodos especiales en Point, super() en SavingsAccount, validación con @property en Celsius y polimorfismo del método area() en figuras.
Problema 1: Diseñar una clase Point con métodos especiales
Construye una clase Point que represente una coordenada 2D. Inicializarás los atributos en __init__, definirás qué hace + entre dos puntos con __add__ y darás forma a lo que muestra print() con __str__: tres métodos especiales trabajando juntos.
Problema 2: Extender una cuenta bancaria con herencia y super()
Hereda de una clase padre BankAccount para construir una SavingsAccount que pueda aplicar intereses. El patrón es la herencia clásica: llama al inicializador del padre con super().__init__(...) y luego añade los atributos específicos del hijo encima.
Problema 3: Validar la temperatura con @property
Escribe una clase Celsius que rechace asignaciones por debajo del cero absoluto (-273.15). Usarás @property y un @value.setter para encajar la validación directamente en la asignación de atributos: ese es el patrón clásico de encapsulación.
t.value = X parece una asignación normal, pero pasa por el setter, que primero valida el valor. Fuera de rango → ValueError, dentro de rango → se guarda en _value.Problema 4: Usar polimorfismo para calcular áreas en un solo bucle
Da a dos clases distintas un método con el mismo nombre (area()), mete sus instancias en una lista y procésalas con un solo bucle for. A quien las llama no le importa qué clase es cuál: eso es el polimorfismo en pocas palabras.
shape.area() en cada elemento de la lista, se elige automáticamente el método que coincide con el tipo real del elemento.¡Buen trabajo llegando hasta aquí!
Con esto cierras POO en Python. Has cubierto el diseño de clases e instancias, métodos especiales como __init__ / __add__ / __str__, herencia con super(), encapsulación con @property, polimorfismo, la sentencia with y los type hints: prácticamente todas las herramientas que necesitas para juntar datos y comportamiento en un único tipo. Ahora puedes definir tus propios tipos, añadirles métodos y tratar varios tipos a través de una interfaz compartida.
El siguiente capítulo, Python Intermedio, trata de ir más allá de un solo archivo: organizar módulos y paquetes y usar la biblioteca estándar —datetime, os, re, json, collections, dataclasses, asyncio y más— para construir el tipo de procesamiento con el que te vas a encontrar realmente en código de producción.