如何在不评估的情况下获得 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

输出:所需信息