ComenzarEmpieza gratis

Usar atributos internos

En este ejercicio, volverás a la clase BetterDate del Capítulo 2.

Has decidido añadir un método que compruebe si la fecha es válida, pero no quieres que forme parte de la interfaz pública de BetterDate.

La clase BetterDate está disponible en el panel del script.

Este ejercicio forma parte del curso

Programación orientada a objetos en Python

Ver curso

Instrucciones del ejercicio

  • Añade un atributo de clase _MAX_DAYS que almacene el número máximo de días de un mes: 31.
  • Añade otro atributo de clase que almacene el número máximo de meses de un año: 12. Usa la convención de nombres adecuada para indicar que es un atributo interno.
  • Añade un método _is_valid() que devuelva True si los atributos day y month son menores o iguales que sus valores máximos correspondientes, y False en caso contrario. ¡Asegúrate de referirte a los atributos de clase por sus nombres!

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Add class attributes for max number of days and months
class BetterDate:
    ____
    
    def __init__(self, year, month, day):
        self.year, self.month, self.day = year, month, day
        
    @classmethod
    def from_str(cls, datestr):
        year, month, day = map(int, datestr.split("-"))
        return cls(year, month, day)
    
    # Add _is_valid() checking day and month values
    ____
    
bd1 = BetterDate(2020, 4, 30)
print(bd1._is_valid())

bd2 = BetterDate(2020, 6, 45)
print(bd2._is_valid())
Editar y ejecutar código