1
resposta

[Projeto] ( Solução) Desafio Opcional

class Data:
    def __init__(self,dia:str,mes:str,ano:str) -> None:
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formata_data(self):
        print(f"{self.dia:02d}/{self.mes:02d}/{self.ano}")
1 resposta

Olá Maria, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado com a comunidade do fórum Alura.

Gostaria de aproveitar a oportunidade e sugerir uma modificação do uso das dicas de tipo (Type Hints) usadas para informar o usuário sobre qual o tipo de atributo esperado na criação de um objeto Data, no código é informado para o usuário que é esperado valores do tipo str, já no método formata_data é aplicado a formatação do valor da data, mas é esperado que o valor do atributo seja do tipo int, representado pela letra d na formatação da string.

Caso ocorra a criação de um objeto usando atributos do tipo str e o método formata_data for chamado será levantado o erro ValueError: Unknown format code 'd' for object of type 'str' informando que não foi possível aplicar a formatação. Por exemplo, se utilizarmos o seguinte código abaixo criando o objeto Data com strings, o erro será gerado:

Data("9", "9", "2022").formata_data()

Erro gerado:

ValueError: Unknown format code 'd' for object of type 'str'

Recomendo que mude a dica de tipo informando para o usuário que será necessário criar um objeto usando valores do tipo int, assim teremos uma coesão nas informações. Como no exemplo abaixo.

def __init__(self, dia: int, mes: int, ano: int) -> None:

E para instanciar o objeto, faremos:

Data(9, 9, 2022).formata_data()

Resultado:

09/09/2022

Vale ressaltar que :02d formata um inteiro (d) para um campo de largura mínima 2 (2), com preenchimento de zero à esquerda, quando a largura mínima de dois caracteres não for atendida, por isso foi acrescentado o 0 a esquerda do valor 9, pois não tinha largura (tamanho) mínimo de dois caracteres.

Na Alura temos um curso dedicado a boas práticas de programação e uso das dicas de tipos no Python, você pode conhecê-lo pelo link a seguir.

Para saber um pouco mais sobre a formatação de string recomendo a leitura do seguinte artigo que irá abordar com mais detalhes sobre as possibilidades de formatação de string:

O conteúdo recomendado acima está em inglês, o uso da língua inglesa é bem comum na área de tecnologia, mas caso não tenha afinidade com essa linguagem, recomendo que utilize o tradutor do navegador para uma melhor compressão.

Lembre-se que pode contar sempre com o fórum Alura, seja para postar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos!