ast.literal_eval与eval的行为相同



我正试图用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、集合、布尔值、NoneEllipsis

该函数不支持自定义类,因为它们没有枚举

相关内容

  • 没有找到相关文章

最新更新