Python: ошибка атрибута-объект' NoneType 'не имеет атрибута 'something'


Я постоянно получаю ошибку, которая говорит

AttributeError: 'NoneType' object has no attribute 'something'

код, который у меня есть, слишком длинный, чтобы публиковать здесь, но мне было интересно, может ли кто-нибудь дать суть того, какие общие сценарии вызовут это 'AttributeError', а как 'NoneType' это должно означать?

обычно, вы получите имя какого-то объекта, где код пошел не так, но так как это дает мне 'NoneType' Я не уверен, как можно сузить то, что происходит, кроме линии число.

5 193

5 ответов:

NoneType означает, что вместо экземпляра любого класса или объекта, с которым вы думаете, что работаете, у вас есть None. Это обычно означает, что вызов присваивания или функции выше не удался или вернул неожиданный результат.

у вас есть переменная, которая равна None и вы пытаетесь получить доступ к атрибуту под названием 'Что-то'.

foo = None
foo.something = 1

или

foo = None
print foo.something

оба дадут AttributeError: 'NoneType'

другие пояснила, что NoneType - это и общий способ закончить с ним (т. е. не возвращать значение из функции).

еще одна распространенная причина у вас есть None где вы не ожидаете, что это назначение операции на месте для изменяемого объекта. Например:

mylist = mylist.sort()

The sort() метод список сортирует список на месте, то есть mylist - это доработанная. Но фактическое возвращаемое значение метода None и не отсортированный список. Итак, вы только что назначили None до mylist. Если вы в следующий раз попытаетесь сделать, скажем, mylist.append(1) Python даст вам эту ошибку.

The NoneType - тип значения None. В этом случае переменная lifetime имеет значение None.

распространенный способ, чтобы это произошло, чтобы вызвать функцию отсутствует a return.

существует бесконечное количество других способов установить переменную в None, однако.

рассмотрим код ниже.

def return_something(someint):
 if  someint > 5:
    return someint

y = return_something(2)
y.real()

Это даст вам ошибку

AttributeError:' NoneType 'объект не имеет атрибута 'real'

такой точки, как показано ниже.

  1. в коде функция или метод класса ничего не возвращает или возвращает None
  2. затем вы пытаетесь получить доступ к атрибуту этого возвращаемого объекта (который отсутствует), вызывая сообщение об ошибке.