Python: ошибка атрибута – объект «NoneType» не имеет атрибута «что-то»,
Я продолжаю получать сообщение об ошибке
AttributeError: 'NoneType' object has no attribute 'something'
Код, который у меня есть, слишком длинный, чтобы публиковать здесь, но мне было интересно, может ли кто-нибудь объяснить суть общих сценариев для этого «AttributeError» и что означает «NoneType» ? (Обычно вы получили бы название какого-либо объекта, где код поступил не так, но поскольку он дает мне «NoneType», я не уверен, как можно сузить то, что происходит, кроме строки #)
- Могу ли я переопределить запрос для класса и использовать подкласс, если свойства подходят?
- Данные как отношение между объектами в Python
- Pythonic способ идентифицировать файл тайны, а затем вызвать для него парсер, специфичный для файла? Создание класса q
- Многие экземпляры класса
- Изменение переменных в нескольких экземплярах Python
NoneType означает, что вместо экземпляра любого класса или объекта, с которым вы работаете, у вас фактически есть None
. Обычно это означает, что вызов вызова или функции выше не выполнен или возвращает неожиданный результат.
У вас есть переменная, равная None, и вы пытаетесь получить доступ к атрибуту, который называется «something».
foo = None foo.something = 1
или
foo = None print foo.something
Оба получат AttributeError: 'NoneType'
Другие объяснили, что такое NoneType
, и общий способ его завершения (т. NoneType
Отказ вернуть значение из функции).
Другая распространенная причина, по которой у вас нет None
где вы не ожидаете, это назначение операции на месте изменяемого объекта. Например:
mylist = mylist.sort()
Метод sort()
списка сортирует список на месте, т. mylist
Изменен mylist
. Но фактическое возвращаемое значение метода – None
а не отсортированный список. Итак, вы только что назначили None
в mylist
. Если вы попытаетесь сделать следующее, скажем, mylist.append(1)
Python предоставит вам эту ошибку.
Тип NoneType
– это тип значения None
. В этом случае время lifetime
переменной имеет значение None
.
Общим способом добиться этого является вызов функции, пропускающей return
.
Тем не менее существует множество других способов установить переменную в None.
Рассмотрим приведенный ниже код.
def return_something(someint): if someint > 5: return someint y = return_something(2) y.real()
Это даст вам ошибку
AttributeError: объект «NoneType» не имеет атрибута «real»
Итак, точки такие, как показано ниже.
- В коде функция или метод класса ничего не возвращает или возвращает None
- Затем вы пытаетесь получить доступ к атрибуту этого возвращенного объекта (который является None), вызывая сообщение об ошибке.
- отображение в реальном времени в цикле while с matplotlib
- Открыть документ с использованием приложения по умолчанию в Python
- имя объекта печати / экземпляра в python
- Предпочтительно ли возвращать анонимный класс или объект для использования в качестве «структуры»?
- Как получить родительский объект Python?
- Понимание механики sqlite Python в многомодульных средах
- Элегантный способ проверить, существует ли вложенный ключ в python dict
- Python: Должен ли я помещать свои данные в списки или атрибуты объектов?
- Python – я, не я и cls
- Почему я не могу напрямую добавлять атрибуты к любому объекту python?
- API-интерфейс Blender Python добавляет свойство к объекту