5

我想将一个类的实例存储在图形工具图中,每个节点一个对象(或图形工具调用它们的“顶点”)。我正在尝试使用顶点属性,因为这似乎是这样做的方法。

class MyClass(object):
    def __init__(self, title):
        self.title = title

graph  = Graph()
my_obj = MyClass('some title')

vertex = graph.add_vertex()
vprop  = graph.new_vertex_property('object')
vprop[vertex] = my_obj

现在我想读回我的类对象,例如遍历所有节点/顶点并打印它们的标题:

for vertex in self.graph.vertices():
    # TODO: how to access titles ? this just prints
    # "<Vertex object with index '0' at 0xb1e4bac>"
    print repr(vertex) + '\n'

另外,如何从图中获取具有特定标题的类对象?一种方法似乎是使用graph.set_edge_filter(...)并应用它来创建一个顶点过滤器 - 考虑到我想要的只是取回一个对象,这似乎是一项非常昂贵的操作。我真的不想将自己的对象标题/顶点索引映射维护为 IMO,这是图表的任务之一。

我在这里错过了一些基本的东西吗?

4

1 回答 1

5

为了访问属性值,您使用与设置其值相同的语法,即

    for vertex in graph.vertices():
        print vprop[vertex].title

会做你想做的。

如果要获取具有给定属性值的顶点,则别无选择,只能在图中搜索它。请记住,属性值不需要是唯一的,因此无法以廉价的方式执行反向映射。此外,每个属性映射都需要一个反向映射,这在内存方面会很昂贵。但是,您可以使用对象轻松地自己完成此操作dict

于 2012-04-09T13:02:44.153 回答