Мне нужно получить имя переменной в Python.
Например:
task = EmailTask()
Мне нужно отобразить «задачу» на фактический объект.
Вариант использования для этого следующий:
Я создаю инструмент ETL, который будет иметь много общих задач многократного использования, и вместо того, чтобы пользователь предоставил дополнительное имя задачи для каждого создаваемого им экземпляра, я буду использовать имя переменной, выбранное пользователем. Это имя переменной используется только для целей ведения журнала. Пример использования:
process_task = MoveDataTask()
email_task = EmailTask()
job = Job(
tasks: [process_task, email_task])
job.start()
Мне придется использовать globals (), поскольку задача будет объявлена в родительском пространстве имен. Я понимаю, что у меня будет несколько ограничений на то, как пользователь объявляет всю «работу», в этом ему придется назначать каждую задачу на имя переменной, вместо того, чтобы делать следующее:
job = Job(
tasks: [MoveDataTask(), EmailTask()])
Я знаю, что globals () в значительной степени дает мне то, что я хочу, но у меня есть сомнения относительно его использования, так как это немного нестандартное использование python. Также, как я понимаю, в globals () может быть несколько имен одного и того же объекта, поэтому мне нужно каким-то образом получить родительское имя ("process_task", "email_task" из приведенного выше примера).
Есть ли какие-либо другие подводные камни / проблемы / вещи, которые мне не хватает в этом подходе?