首页 > 解决方案 > 如何避免命名变量“varname”?

问题描述

我正在处理一段代码,其中包含一个名为varname. 这是它的简化版本:

class Task:
    def __init__(self, context, taskname, varname='results'):
        self.context = context
        self.taskname = taskname
        self.varname = varname

    def execute(self):
        """
        Dispatch this task to the correct handler.

        """
        logger.info(f"Running task: {self.taskname}")
        try:
            handler = getattr(self, self.taskname)
        except AttributeError:
            raise RuntimeError(f'Task "{self.taskname}" is currently not implemented')

        # Assign output of task to ``varname``
        context[self.varname] = handler()
        return context

该类Task旨在供任务运行程序使用,调用者可以在其中指定任务的名称以及将存储结果的“varname”。这样,后续任务可以参考之前任务的结果。多个任务运行如下:

execution_context = {}
todolist = [
    ('some_task', 'results'),
    ('some_other_task', None),
]
for task_name, varname in todolist:
   task = Task(execution_context, task_name, varname)
   execution_context.update(task.execute()) 

这是我的问题:如何避免使用varname在这种情况下命名的变量?有一个变量包含另一个变量的名称(嗯,实际上是字典键的名称)似乎很愚蠢。当然,我可以重命名变量,但过去当我遇到这样的情况时,通常有比“评估”变量名更优雅的解决方案。或者这种方法可能没有错?

标签: python

解决方案


推荐阅读