python - 如何避免命名变量“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
在这种情况下命名的变量?有一个变量包含另一个变量的名称(嗯,实际上是字典键的名称)似乎很愚蠢。当然,我可以重命名变量,但过去当我遇到这样的情况时,通常有比“评估”变量名更优雅的解决方案。或者这种方法可能没有错?
解决方案
推荐阅读
- visual-studio - 当我尝试使用多维块或网格时,结果数组的一部分出现零
- laravel - 如何有效地使用 Laravel Repository 模式绑定
- .net-core - 具有单个导航属性的多个(可选)一对一关系
- c# - 如何使用 yield return readlineAsync() 实现取消
- java - Android 视图 asbolute 超出父级
- angular - Angular 无法读取未定义的属性
- javascript - 将英语句子的翻译定位在右边缘
- ios - Xcode 找不到任何与“应用程序扩展的捆绑 ID”签名问题匹配的 iOS App Store 配置文件
- php - iis8 上 WSS 上的 Ratchet Websockets
- c# - 如何将此动态集合表达式从 VB.NET 转换为 C#?