无法使用Python的ctypes库编写节点结构

时间:2015-03-26 18:53:41

标签: python ctypes

我正在尝试使用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中调用它。

1 个答案:

答案 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'])]