gpt4 book ai didi

python - list() 给出类型错误 : 'Node' object is not callable - BUT ONLY AFTER SOME CODES

转载 作者:行者123 更新时间:2023-12-01 05:28:49 25 4
gpt4 key购买 nike

我希望这对你们来说是一件容易的事。

这是我的 Nuke 脚本。

selNodes = nuke.selectedNodes()

for list in selNodes:
if list.Class() == 'Read':
layerArray = []
# Get the list of layers and make unique using set
for chanList in list.channels():
channelLayer = chanList.split('.')
layerArray.append(channelLayer[0])

print list(set(layerArray))

它给出了一个错误:

Traceback (most recent call last):
File "<string>", line 11, in <module>
TypeError: 'Node' object is not callable

所以我尝试了一个具有相同性质的更简单的代码:

a = [1, 1]
print list(set(a))

但它不起作用。同样的错误消息。现在奇怪的是:我打开了一个新的 Nuke 并再次运行了更简单的代码,它起作用了。我不明白为什么,但我很高兴。所以我输入我的原始代码并运行它,错误消息。我删除了它们,编辑器现在干净了。再次运行更简单的代码,错误消息!!

这意味着在我粘贴和删除其他内容后,工作代码可能会失败!

有人能解释一下这个问题吗? Nuke是一个非常成熟的软件我不知道这是否是一个软件错误。

最佳答案

这是因为,您使用list作为循环变量,这隐藏了内置函数list 。您正在使用该功能

print list(set(layerArray))

即使循环结束,循环变量也会泄漏,请检查此程序以更好地理解

for i in range(10):
pass
print(i)

这将打印 9。这意味着,即使循环结束后,i 在程序中仍然可用。在您的程序中,在迭代 selNodes 后,list 变量具有最后一个变量。当你说

时,你试图像函数一样调用它
print list(set(layerArray))

这就是它失败的原因。有两种方法可以解决此问题。

  1. 只需将循环变量更改为其他值即可。

  2. 循环结束时使用 del list假装我没有建议这样做。 推荐这样做。只需将循环变量更改为其他值即可。

关于python - list() 给出类型错误 : 'Node' object is not callable - BUT ONLY AFTER SOME CODES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20778430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com