Uso de atributos internos
En este ejercicio, volverás a la clase BetterDate
del capítulo 2.
Decides añadir un método que compruebe la validez de la fecha, pero no quieres que forme parte de la interfaz pública de BetterDate
.
La clase BetterDate
está disponible en el panel de script.
Este ejercicio forma parte del curso
Programación orientada a objetos en Python
Instrucciones de 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
. Utiliza la convención de nomenclatura adecuada para indicar que se trata de un atributo interno. - Añade un método
_is_valid()
que devuelvaTrue
si los atributosday
ymonth
son menores o iguales que los valores máximos correspondientes, yFalse
en caso contrario. ¡Asegúrate de referirte a los atributos de clase por sus nombres!
Ejercicio interactivo práctico
Pruebe este ejercicio completando este 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())