Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Não roda

Meu códido não roda no console :(

class Datas:
    def __init__(self, dia, mes, ano):
        print("Construindo objeto...")
        self.dia = dia
        self.mes = mes
        self.ano = ano

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

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

5 respostas

Oi, Mara, tudo bem?

O erro já explica o que houve com o seu código: a variável que você está tentando interagir simplesmente não existe. A variável que você criou é "datas", não "data".

"NameError: name 'data' is not defined" = Erro de nome: o nome 'data' não está definido.

Lembre-se: você tem que usar os métodos do objeto que você criou, nesse caso, não da classe. O certo, nesse caso, seria datas.formatada().

Olá Samuel tudo bem ?

Eu também tinha tentado datas.formatada() e não foi

Olha:

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Agora o erro mudou. Ele está dizendo que não existe o método "formatada()". Acabei de olhar o seu código e há um erro de indentação. O método formatada está dentro do método construtor e por isso não pode ser acessado.

class Datas:
    def __init__(self, dia, mes, ano):
        print("Construindo objeto...")
        self.dia = dia
        self.mes = mes
        self.ano = ano

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

Eis o código corrigido.

solução!

Oioiii Mara, tudo bem com você?

Quando estamos trabalhando com classes em Python e queremos criar funções abaixo do nosso método __init__, precisamos manter a indentação da função na mesma linha desse método, para que a classe consiga visualizar essa função. O que está acontecendo é que sua função def formatada(self) se encontra dentro do nosso método, por isso a classe não está conseguindo identificar ela.

Para corrigirmos isso, podemos retirar uma indentação dessa função, ficando dessa maneira:

class Datas:
    def __init__(self, dia, mes, ano):
        print("Construindo objeto...")
        self.dia = dia
        self.mes = mes
        self.ano = ano

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

Resultado:

>>> from datas import Datas 
>>> datas = Datas('21','08','2022')
Construindo objeto...
>>> datas.formatada()
 Hoje é: 21/08/2022

Dessa maneira, a sua função consegue ser achada pela classe, quando você chamar ela no terminal :)

Caso queira se aprofundar ainda mais sobre a Linguagem Python, recomendo a formação Python e orientação a objetos na alura!

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!

Olá Laís !

Issom mesmo. Consegui agora. Obrigada !

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software