我有一个类名列表作为字符串,如果我说fe。print(cNames[0])
它将导致Foo
,因为cNames[0] = "Foo"
。如果我想比较一个类字符串和一个类,我会这样做:
if eval(cNames[0]) in classes:
foo = eval(cNames[0])()
但是,它给了我无效的语法错误:
^{pr2}$我知道我只打印类名,但它也不适用于if语句,所以我试着用印刷体来打印。没有效果
编辑:
所以问题似乎是我打给eval("<class 'testing.Foo'>")
而不是{<class>:i
例如Foo:53
,但是我做的是<class 'testing.Foo'>:53
,这就是为什么对它调用eval不会起作用。如何将<class 'testing.Foo'>
(不是字符串,类本身)转换为字符串“Foo”?在
假设您有一个包含类的列表,那么无需使用
eval
,就可以非常整洁地完成这项工作(仅在pythonv2.7中测试了上述内容,但在v3中也应该可以正常工作)
我很确定这里发生的是你在做}是你打印这个类时得到的表示。也就是说,你正在做的是:
eval()
两次,而{不过,我要说的是,这是一种不好的方式。存储一个字典,从名字到类,然后使用它——这是一个更清晰、更可靠、更安全、更快的方法(如果你真的觉得需要的话,你可以生成这个字典)。在
相关问题 更多 >
编程相关推荐