如何在不评估的情况下获得 class 属性?
How to get class attributes without evaling it?
比如我有字符串(未加载代码):
class InfoClass:
INFO = "Required info"
def __init__(self):
# Unsafe code, which can be executed
有没有什么方法可以在不执行 init 或其他任何操作的情况下从 InfoClass 获取 INFO,无需正则表达式?
InfoClass.INFO # returns value.
解决方法:使用ast.parse
https://docs.python.org/3/library/ast.html#ast.parse
import ast
code = """
class InfoClass:
INFO = "Required info"
"""
ast.parse(code).body[0].body[0].value.value
输出:所需信息
比如我有字符串(未加载代码):
class InfoClass:
INFO = "Required info"
def __init__(self):
# Unsafe code, which can be executed
有没有什么方法可以在不执行 init 或其他任何操作的情况下从 InfoClass 获取 INFO,无需正则表达式?
InfoClass.INFO # returns value.
解决方法:使用ast.parse https://docs.python.org/3/library/ast.html#ast.parse
import ast
code = """
class InfoClass:
INFO = "Required info"
"""
ast.parse(code).body[0].body[0].value.value
输出:所需信息