我需要获取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”)。
这种方法是否还缺少其他陷阱/问题/东西?
答案 0 :(得分:0)
创建辅助函数(可能是为了命名空间而在专用模块中)并将它们传递给作业:
def process_task():
return MoveDataTask()
def email_task():
return EmailTask()
# ...
job.add_task(process_task)
job.add_task(email_task)
# ...
for task in job.tasks:
task()