我有一个包含节点和字符串的数组。通过循环传递它时,我想根据读取的对象类型调用某些函数。我尝试执行以下操作来测试类型-
if to_fry_array[fry_looper].is_class("Node2D"):
to_fry_array[fry_looper].show()
else:
print (to_fry_array[fry_looper])
在数组to_fry_array
中读取字符串时,代码将引发错误。错误-
无效的通话。基础'字符串'中不存在的函数'is_class'。
如何修改此代码,使其对所有类型的对象/变量都通用?
答案 0 :(得分:0)
并非每种类型都有方法is_class
,但是幸运的是,您可以使用运算符typeof
来实现所需的功能。
if typeof(obj) == TYPE_OBJECT and obj.is_class("Node2D"):
print("Node2D: ", obj)
elif typeof(x) == TYPE_STRING:
print("String: ", obj)
,在您的特定情况下:
if typeof(to_fry_array[fry_looper]) == TYPE_OBJECT and \
to_fry_array[fry_looper].is_class("Node2D"):
to_fry_array[fry_looper].show()
else:
print (to_fry_array[fry_looper])
答案 1 :(得分:0)
is_class()函数
如果未识别该功能,则可能是您使用的是旧版本
我建议使用 get_class()或 typeof()函数作为替代。
研究链接: