我正在尝试使用ctypes编写标准节点结构,但似乎我无法引用节点本身,即:
import ctypes
class A_Star_Node(ctypes.Structure):
_fields_ = [("g", ctypes.c_int),
("h", ctypes.c_int),
("height", ctypes.c_int),
("lead_action", ctypes.c_int),
("parent", A_Star_Node)]
def f(self):
return self.g + self.h
其中parent应该引用此节点之前的节点。出现的错误是:
NameError: name 'A_Star_Node' is not defined
我该如何使这项工作?
Obs。:我想用Python而不是C语言,所以请不要在C语言中编写这个结构并在Python中调用它。
答案 0 :(得分:0)
您是否考虑过:
import ctypes
class A_Star_Node(ctypes.Structure):
@staticmethod
def getAStarNode():
return A_Star_Node
_fields_ = [("g", ctypes.c_int),
("h", ctypes.c_int),
("height", ctypes.c_int),
("lead_action", ctypes.c_int),
("parent", A_Star_Node.getAStarNode())]
def f(self):
return self.g + self.h
可能会工作。
另一种方式是
("parent", globals()['A_Star_Node'])]