#python #class #attributes #eval
Вопрос:
Например, у меня есть строка (не загруженный код):
class InfoClass:
INFO = "Required info"
def __init__(self):
# Unsafe code, which can be executed
Есть ли какой-либо способ получить информацию из инфокласса без регулярного выражения, не выполняя инициализацию или что-либо еще?
Ответ №1:
InfoClass.INFO # returns value.
Комментарии:
1. В другом коде может содержаться небезопасное (вредоносное ПО). Я не могу просто оценить это
2. Попробуйте записать значение атрибута в файл с помощью python
Ответ №2:
Решение: используйте 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
Вывод: Необходимая информация