Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

09 - Desafio Opcional - Python: entendendo a Orientação a Objetos

Cheguei a essa resolução:

class Data:

    def __init__(self, dia, mes, ano):
        print(f"Construindo objeto... {self}")
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formatada(self):
        print(f"{self.dia}{self.mes}{self.ano}", sep="/")

Mas reparei que quando coloco um mês que começa com "0", é apresentado um erro (SyntaxError: leading zeros in decimal integer literals are not permitted). A única forma que encontrei de driblar esse erro, foi escrever o mês como str, entre aspas duplas.

Quem tiver algo para acrescentar, fique a vontade.

Obrigado.

1 resposta
solução!

Nativamente no Python, quando você coloca o 0 antes do número ele não aceita, pois isso pode gerar ambiguidade (um mesmo código significar duas coisas diferentes). Um literal inteiro começando com 0 sempre deve ter um caractere na sequência que determina em qual sistema numérico ele se encaixa: 0x para hexadecimal, 0o para octal, 0b para binário.

Linguagens de programação são linguagens formais, o que significa que "toda frase tem apenas um significado" ("x = 1" sempre significa a mesma coisa), diferente das linguagens naturais (como o português) onde as frases podem ter mais de um significado, como na frase "João bateu as botas", que pode significar tanto literalmente bater uma bota na outra ou falecer.

Pra contornar isso, só fazendo o tratamento dos dados antes de fazer a atribuição, como sempre devemos fazer. É bom receber como string e depois converter para inteiro.