Eu continuo recebendo um erro que diz
AttributeError: 'NoneType' object has no attribute 'something'
O código que eu tenho é muito longo para postar aqui. Que cenários gerais causariam isso AttributeError
, o que NoneType
deveria significar e como posso restringir o que está acontecendo?
python
attributeerror
nonetype
Jacob Griffin
fonte
fonte
print
funções (ou instruções, dependendo da versão) para revelar os valores reais que as variáveis realmente têm no código que está tendo esse problema.None
.Respostas:
NoneType significa que, em vez de uma instância de qualquer classe ou objeto com o qual você pensa estar trabalhando, você realmente tem
None
. Isso geralmente significa que uma atribuição ou chamada de função acima falhou ou retornou um resultado inesperado.fonte
Você tem uma variável que é igual a None e está tentando acessar um atributo chamado "alguma coisa".
ou
Ambos produzirão um
AttributeError: 'NoneType'
fonte
None
alguma coisa. Éfoo = None
improvável que um explícito seja o problema; vai serfoo = something()
e você não percebe quesomething()
pode retornarNone
quando não for bem-sucedido ou se o conjunto de resultados estiver vazio ou o que seja.Outros explicaram o que
NoneType
é e uma maneira comum de terminar com ele (ou seja, falha ao retornar um valor de uma função).Outro motivo comum que você tem
None
e não espera que seja a atribuição de uma operação no local em um objeto mutável. Por exemplo:O
sort()
método de uma lista classifica a lista no local, ou seja,mylist
é modificada. Mas o valor de retorno real do método éNone
e não a lista classificada. Então você acabou de atribuirNone
amylist
. Se você tentar fazer o seguinte, digamos, omylist.append(1)
Python fornecerá esse erro.fonte
O
NoneType
é o tipo do valorNone
. Nesse caso, a variávellifetime
tem um valor deNone
.Uma maneira comum de fazer isso acontecer é chamar uma função que falta a
return
.Entretanto, há um número infinito de outras maneiras de definir uma variável como Nenhuma.
fonte
lifetime
tinha um valor deNone
(pré-edição). Ele estava tentando acessar o atributo vitalício de outra coisa que eraNone
.Considere o código abaixo.
Isso vai lhe dar o erro
Então os pontos são como abaixo.
fonte
Significa o objeto que você está tentando acessar
None
.None
é umaNull
variável em python. Este tipo de erro ocorre porque o seu código é algo como isto.fonte
O gddc está certo, mas adicionando um exemplo muito frequente:
Você pode chamar essa função de forma recursiva. Nesse caso, você pode acabar com ponteiro nulo ou
NoneType
. Nesse caso, você pode obter este erro. Portanto, antes de acessar um atributo desse parâmetro, verifique se não estáNoneType
.fonte
if foo is not None:
Ao criar um estimador (sklearn), se você esquecer de retornar a si próprio na função de ajuste, receberá o mesmo erro.
A adição
return self
à função de ajuste corrige o erro.fonte
Você pode obter esse erro comentando HTML em um aplicativo Flask. Aqui o valor para qual.date_expiry é None:
Exclua a linha ou corrija-a:
fonte
se atribuirmos algo como o abaixo, ele gerará um erro como "AttributeError: 'NoneType' objeto não tem atributo 'show'"
fonte