我正试图用ast.literal_eval实现与eval相同的行为,这可能吗?
import ast
class MyClass():
...
class_string = "MyClass"
eval_clas = eval(class_string)
print(eval_clas)
ast_class = ast.literal_eval(class_string)
print(ast_class)
eval_class的输出:
<class '__main__.MyClass'>
当我尝试用literal_eval做同样的事情时,我得到了
ValueError: malformed node or string: <_ast.Name object at 0x7f1670b9a520>
ast.literal_eval
文档声称
安全地计算表达式节点或包含Python的字符串文字或容器显示。提供的字符串或节点只能由以下Python文本结构组成:字符串、字节、,数字、元组、列表、dicts、集合、布尔值、
None
和Ellipsis
。
该函数不支持自定义类,因为它们没有枚举