1
Я реализует алгоритм поиска (BFS) и имеет следующий Node
класс:Как написать __iter__ для итерации от листового узла до корня?
class Node:
def __init__(self, state=None, action=None, path_cost=None, parent=None):
self._state = state
self._action = action
self._path_cost = path_cost
self._parent = parent
Мой BFS решатель возвращает узел решения (ребенок). С помощью этого узла можно затем, например, рассчитать общую стоимость пути следующим образом (этот код является частью другого Summary
класса):
def path_cost(self):
self._cost = self._node.path_cost
node = self._node.parent
while node:
self._cost += node.path_cost
node = node.parent
return self._cost
Есть ли лучший способ сделать это путем создания пользовательского __iter__
метода в Node
?
Цените свой ответ. Хотя я вижу, как это работает, мой конкретный вопрос заключается в том, может ли '__iter__' использоваться для решения проблемы? Если нет, мне нужно узнать, почему нет. –
Обновлено. Сам '__iter__' может быть функцией генератора. – schwobaseggl
Сладкий, это работает! Спасибо! –