Python 2.7 «NoneType» объект не имеет атрибута - PullRequest
0 голосов
/ 28 ноября 2011

Я новичок в Python и работаю с набором объектов (Node) и просто пытаюсь перебрать набор объектов и распечатать переменную 'H'. К сожалению, я продолжаю получать сообщение об ошибке: («AttributeError: объект« NoneType »не имеет атрибута« H »»). Любая идея о том, почему это происходит, будет принята с благодарностью.

Вот мой классовый узел, который хранится в наборе.

class Node:
    def __init__(self, row, col, heuristic):
        self.row = row
        self.col = col
        self.H = heuristic
        self.parent = None

    @classmethod
    def with_parent(self, row, col, heuristic, parent):
        self.row = row
        self.col = col
        self.H = heuristic
        self.parent = parent

Вот набор с первым вводимым Узлом. Позже вводятся дополнительные узлы, но пока простое добавление еще создает головную боль

open_list = set()
start_row, start_col = start_loc
open_list.add(Node(start_row, start_col, 0))

А вот строка кода, выдающая ошибку: («AttributeError: объект« NoneType »не имеет атрибута« H »»)

for open_node in open_list:
    sys.stdout.write("H: " + str(open_node.H))

Как только я смогу это решить, настоящая цель - разобраться в эвристике.

current = sorted(open_list, key=lambda open: open.H)[0]

1 Ответ

3 голосов
/ 29 ноября 2011

Ошибка «AttributeError: объект NoneType» не имеет атрибута «H» »означает, что одному из узлов в open_list присваивается значение« Нет »вместо инициализации. Что-нибудь случается с open_list между отображаемыми строками и строкой с ошибкой?

...