我是Python新手,使用一组对象(Node),只是尝试迭代对象集并打印出变量'H'。不幸的是我不断收到错误:(“AttributeError:'NoneType'对象没有属性'H'”)。任何关于为什么会发生这种情况的见解将不胜感激。
这是我的类Node,它存储在集合中。
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]
答案 0 :(得分:3)
错误“AttributeError:'NoneType'对象没有属性'H'”表示open_list
中的一个节点被赋值为'None'而不是被初始化。在您显示的行和有错误的行之间,open_list
是否发生了任何事情?