获取python变量的名称(从父命名空间)

2024-09-22 16:39:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在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\u task”,“email\u task”来自上面的示例)。你知道吗

这种方法是否还有其他缺陷/问题/我遗漏的东西?你知道吗


Tags: 对象用户名称声明示例taskemailjob
1条回答
网友
1楼 · 发布于 2024-09-22 16:39:51

创建助手函数(可能是为了命名空间而在专用模块中)并将其传递给作业:

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()

相关问题 更多 >