【发布时间】:2015-11-20 12:56:04
【问题描述】:
鉴于下面的示例,是否有比传递字符串以允许函数进行测试并反过来运行所需代码更优雅的解决方案?
myfunction(self, "location1")
def myfunction(self, source):
if source == "location1":
qs = MyModel.objects.filter(id = self.object.id)
return qs
elif source == "location2":
qs = AnotherModel.objects.filter(id = self.object.id)
return qs
else:
qs = YetAnotherModel.objects.filter(id = self.object.id)
return qs
此示例包含虚拟 Django 查询,但我不得不在整个项目中的各种 Python 函数上使用此解决方案。
【问题讨论】:
-
为什么不创建三个独立的函数并在每个位置调用它们呢?或者(如果你真的想要一个函数) - 传递实际需要的对象,在这种情况下是
MyModel、AnotherModel或YetAnotherModel。 -
多功能听起来不错。也许我试图太干。感谢 cmets。
标签: python