Python: ошибка атрибута-объект' NoneType 'не имеет атрибута 'something'
Я постоянно получаю ошибку, которая говорит
AttributeError: 'NoneType' object has no attribute 'something'
код, который у меня есть, слишком длинный, чтобы публиковать здесь, но мне было интересно, может ли кто-нибудь дать суть того, какие общие сценарии вызовут это 'AttributeError', а как 'NoneType' это должно означать?
обычно, вы получите имя какого-то объекта, где код пошел не так, но так как это дает мне 'NoneType' Я не уверен, как можно сузить то, что происходит, кроме линии число.
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'
такой точки, как показано ниже.
- в коде функция или метод класса ничего не возвращает или возвращает None
- затем вы пытаетесь получить доступ к атрибуту этого возвращаемого объекта (который отсутствует), вызывая сообщение об ошибке.