Dei uma incrementada no código, assim coloquei parâmetros para se evitar datas erradas:
class Data: def init(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano
def imprimir_data(self):
if self.mes > 12:
print(f'Data inválida: {self.dia}/{self.mes}/{self.ano}, por favor trocar a data.')
elif self.dia > 31:
print(f'Data inválida: {self.dia}/{self.mes}/{self.ano}, por favor trocar a data.')
elif self.ano < 1900:
print(f'Data inválida: {self.dia}/{self.mes}/{self.ano}, por favor trocar a data.')
elif self.dia > 29 and self.ano == 2:
print(f'Data inválida: {self.dia}/{self.mes}/{self.ano}, por favor trocar a data.')
elif self.dia or self.mes or self.ano < 0:
print(f'Data inválida: {self.dia}/{self.mes}/{self.ano}, por favor trocar a data')
else:
print(f'{self.dia}/{self.mes}/{self.ano}')