Inseri o filtro completo de datas válidas na classe. Teria uma maneira melhor em OO para fazer neste caso, pra não ficar tão tumultuado?
class Data:
def __init__(self, dia, mes, ano):
verifica = True
if ano < 1:
verifica = False
elif mes not in range(1, 13):
verifica = False
elif mes in (1, 3, 5, 7, 8, 10, 12):
if dia not in range(1, 32):
verifica = False
elif mes in (4, 6, 9, 11):
if dia not in range(1, 31):
verifica = False
elif mes == 2:
bidiv = ano % 4
if bidiv == 0:
if dia not in range(1, 30):
verifica = False
else:
if dia not in range(1, 29):
verifica = False
if verifica:
self.dia = dia
self.mes = mes
self.ano = ano
else:
print('Data inválida - lançamento 01/01/0001')
self.dia = 1
self.mes = 1
self.ano = 1
def formatada(self):
print(f"{self.dia:02d}/{self.mes:02d}/{self.ano:04d}")
no outro arquivo eu chamei
from datas import Data
d = Data(21,11,2007)
d.formatada()