AttributeError: объект «NoneType» не имеет атрибута, записывающего гадание [дубликат]

Используйте Java kiss , если речь идет о простоте структуры:

import static kiss.API.*;

class App {
  void run() {
    String line;
    try (Close in = inOpen("file.dat")) {
      while ((line = readLine()) != null) {
        println(line);
      }
    }
  }
}

190
задан Jacob Griffin 21 January 2012 в 01:45
поделиться

5 ответов

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

193
ответ дан g.d.d.c 18 August 2018 в 22:22
поделиться

У вас есть переменная, которая равна None, и вы пытаетесь получить доступ к атрибуту, который он назвал «something».

foo = None
foo.something = 1

или

foo = None
print foo.something

Оба даст AttributeError: 'NoneType'

77
ответ дан Joel Cornett 18 August 2018 в 22:22
поделиться

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

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

mylist = mylist.sort()

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

35
ответ дан kindall 18 August 2018 в 22:22
поделиться
  • 1
    Это то, что я делал, назначая возвращаемое значение функции, которая фактически ничего не возвращает переменной. Благодаря! – Kaya311 15 December 2015 в 13:27

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

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

y = return_something(2)
y.real()

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

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

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

  1. В коде метод или метод класса ничего не возвращает или возвращает None
  2. Then вы пытаетесь получить доступ к атрибуту этого возвращенного объекта (который является None), вызывая сообщение об ошибке.
7
ответ дан PHINCY L PIOUS 18 August 2018 в 22:22
поделиться

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

Общим способом для этого является вызов функции, отсутствующей в return.

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

11
ответ дан S.Lott 18 August 2018 в 22:22
поделиться
  • 1
    Я не думаю, что у lifetime значение None (предварительное редактирование). Он пытался получить доступ к атрибуту времени жизни чего-то еще, что было None. – g.d.d.c 14 November 2014 в 04:09
Другие вопросы по тегам:

Похожие вопросы: