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

NameError: name 'Data' is not defined

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

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

    d = Data(21, 11, 2007)
    d.formatada()

esse foi o meu código, mas o console acusou esse erro:

Traceback (most recent call last): File "F:\Documentos\ALURA\python\oo\exercicios.py", line 1, in class Data: File "F:\Documentos\ALURA\python\oo\exercicios.py", line 10, in Data d = Data(21, 11, 2007) NameError: name 'Data' is not defined

4 respostas
solução!

Boa tarde Thiago, tudo bem?

Note que a indentação das ultimas 2 linhas faz com que elas ainda façam parte de sua classe. Tente retirar esta indentação e verá que o código voltará a funcionar.

Um instrutor pode dar mais detalhes sobre o erro em si, mas pelo o que eu sei, o erro ocorre pois você está tentando criar um objeto d* utilizando a classe *Data, porém, você está chamando a classe dentro dela mesma.

Espero ter ajudado

Abraços

A classe está sendo chamada dentro dela mesma

Faltou indentação

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

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

d = Data(21, 11, 2007)
d.formatada()

legal, eu tenho que me acostumar ainda que no python a indentação já define o que está dentro do que.

muito obrigado!

Lembrando que há casos em que a indentação é facultativa.

Por exemplo, para casos mais simples, eu acho mais legível:

if True: print('this')