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

[Dúvida] Pessoal teria como fazer de forma diferente a essa descrita ?

Executando a tarefa do exercício pensei dessa maneira do código, pois, não sabia como interagir com o código por conta do self. A atividade era pra gerar uma classe com data formatada, minha dúvida é como manusear o código quando contém o self. O código ficou assim:

class Data:
    def __init__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano


    def data_formatada(self):
        data = print("{}/0{}/{}".format(self.dia, self.mes, self.ano))
        return data
1 resposta
solução!

Olá João, tudo bem?

Parabéns por ter desenvolvido o desafio que foi proposto no curso. Fico feliz que tenha compartilhado com a comunidade do fórum da Alura, assim, podemos ver seu desenvolvimento e ideias de implementação e seu código pode ainda ajudar os outros estudantes da plataforma :)

Entendi sua dúvida sobre como manusear o código quando ele contém o self. O self é uma referência ao próprio objeto que está sendo criado, ou seja, ele permite que você acesse os atributos e métodos da classe dentro da própria classe. No seu código, você está utilizando o self para acessar os atributos dia, mes e ano dentro do método data_formatada. Isso é necessário porque esses atributos foram definidos dentro do método __init__ e, portanto, só podem ser acessados dentro da própria classe.

Sobre sua pergunta se teria como fazer de forma diferente, depende do que você quer dizer com "diferente". Se você está se referindo a uma forma de não utilizar o self, infelizmente não é possível, pois é a forma padrão de se referenciar aos atributos e métodos dentro da classe. Se for em relação ao print e como manipular esses atributos, há diversas formas de como fazer isso. Uma delas é outra maneira que você pode implementar a sua data na sua função formatada() é através da formatação de string, em que podemos colocar a saída para um padrão determinado por nós, como mostrado no código abaixo:

def formatada(self):
    print("{:02d}/{:02d}/{}".format(self.dia, self.mes, self.ano))

Resultado:

>>>data_teste = Data(1,9,2022)
>>>data_teste.formatada()
>>>01/09/2022

Nesse caso, o valor de formatação deve ser um inteiro (tipo int, definido como “d”), em que o :02d determina um campo de tamanho mínimo dois, em que o ‘0’ (zero) indica que se não houver pelo menos duas casas no número, ele será preenchido com um zero na esquerda dele, como ocorreu no exemplo acima.

Caso queira saber mais sobre formatação de strings, recomendo a leitura da documentação do Python sobre Entrada e Saída e se deseja se aprofundar mais ainda sobre a Linguagem Python, recomendo a formação Python e orientação a objetos na alura!

Muito obrigada por ter compartilhado seu código, e em caso de dúvidas, me coloco à disposição :)

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!