最近搞毕业设计,研究知识图谱,在学习python扩展库py2neo时遇到了一个问题,代码如下:
a=Node('Student',name='Alice')
b=Node('Student',name='Bob')
c=Node('Student',name='Carol')
r1=Relationship(a,'knows',b)
r2=Relationship(a,'work_with',c)
s = a | b | c | r1 | r2
print(s.nodes())
然后报错:TypeError: 'SetView' object is not callable
网上查阅了相关资料,都说的是python一旦出现'XXXXXX' object is not callable
这一类的报错,大致原因都是在程序中使用了函数作为变量名导致的,会想起以前犯的错误,也确实如此,但是后来在直接打印s.nodes时。
print(s.nodes)
终端展示<interchange.collections.SetView object at 0x0000022EB06425C8>
好家伙,这玩意儿不是个迭代器吗?于是直接用for循环遍历,成功输出子图的所有节点:
a=Node('Student',name='Alice')
b=Node('Student',name='Bob')
c=Node('Student',name='Carol')
r1=Relationship(a,'knows',b)
r2=Relationship(a,'work_with',c)
s = a | b | c | r1 | r2
for i in s.nodes:
print(i)
终端显示结果:
(:Student {name: 'Alice'})
(:Student {name: 'Bob'})
(:Student {name: 'Carol'})
完美解决~
顺便打印一下它的所有关系也是一个道理s.relationships
~
文章出处登录后可见!
已经登录?立即刷新