Minha primeira resposta foi:
class Data:
def __init__(self, dia, mes, ano):
self.dia = dia
self.mes = mes
self.ano = ano
def formatada(self):
print("{}/{}/{}".format(self.dia, self.mes, self.ano))
Uma outra resposta seria:
class Data:
def __init__(self, dia: int, mes: int, ano: int) -> None:
self.dia = dia
self.mes = mes
self.ano = ano
self.bissexto: bool = False
self.data_correta_dia: bool = False
self.data_correta_ano: bool = False
@property
def verifica_bissexto(self):
if self.ano % 4 == 0 :
self.bissexto = True
return self.bissexto
@property
def verifica_dias_mes(self) -> int:
if self.mes in [1, 3, 5, 7, 8, 10, 12] and 1 <= self.dia <= 31:
self.data_correta_dia = True
elif self.mes in [4, 6, 9, 11] and 1 <= self.dia <= 30:
self.data_correta_dia = True
elif self.mes == 2 and ((self.verifica_bissexto and 1 <= self.dia <= 29) or (not self.verifica_bissexto and 1 <= self.dia <= 28)):
self.data_correta_dia = True
else:
self.data_correta_dia = False
return self.data_correta_dia
@property
def verifica_mes_ano(self) -> int:
if 1 <= self.ano <= 12:
self.data_correta_ano = True
else:
self.data_correta_ano = False
return self.data_correta_ano
def formatada(self) -> None:
if self.verifica_dias_mes and self.verifica_mes_ano:
saida = f"{self.dia:02d}/{self.mes:02d}/{self.ano:02d}"
else:
saida = "Data Incorreta!"
return print(saida)