我有一个递归函数,它接受一个新的set()
作为参数。这是功能:
def attributes(node, set):
set.add(node.tag)
if not node.istext():
for n in node.content:
set = set.intersection(attributes(node, set()))
return set
但是我收到了这个错误:
error -> TypeError
'set' object is not callable
答案 0 :(得分:5)
您使用本地参数覆盖全局内置set
。只需将其更改为
def attributes(node, my_set):
...
答案 1 :(得分:0)
问题是您使用的是Python本身保留的数据类型(集合),您不应将其用作变量名称,因此请更改名称:
def attributes(node, the_set):
the_set.add(node.tag)
if not node.istext():
for n in node.content:
the_set = the_set.intersection(attributes(n, set()))
return the_set