← Все вопросы
AttributeError: 'NoneType' object has no attribute — откуда NoneType?
16
result = my_list.sort()
result.append(5)
Получаю AttributeError: 'NoneType' object has no attribute 'append'. Откуда тут None, я же со списком работаю?
3 ответа
28
✓ Принятый ответ — помог автору
.sort() сортирует список на месте и возвращает None. Поэтому result — это None, а не список.
Классическая ловушка: методы, которые меняют объект «на месте», возвращают None, а не сам объект. Сюда же .append(), .reverse(), .update() у словаря.
my_list.sort() # просто сортируем сам список
my_list.append(5) # и дальше работаем с ним
# а если нужна КОПИЯ отсортированного — sorted():
result = sorted(my_list)
Вообще 'NoneType' object has no attribute ... почти всегда значит: переменная, к которой ты обращаешься через точку, оказалась None. Ищи, где она присваивается, — скорее всего функция/метод вернул None (или функция без return вообще).
Оксана Баранова вот это засада с sort(), спасибо! перешёл на sorted() · 5 месяцев назад
Семен Протапопов автор: то что надо, принято ✅ · 5 месяцев назад
6
Метод вернул None, а ты от него зовёшь .append.
5
Используй sorted(my_list), оно возвращает новый список.
Ваш ответ
Войдите, чтобы ответить на вопрос.