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
- затем вы пытаетесь получить доступ к атрибуту этого возвращаемого объекта (который отсутствует), вызывая сообщение об ошибке.