最小化代码量

时间:2013-09-06 14:28:33

标签: python django

我在下面有这个功能,我还需要在翻译之前检查每个变量是否都没有。

def save(self):
    # add an an if condition to check all the below variables if they are none
    # if self.name_es or ..... is not None:
    self.name_es = translateField(self.name, 'es') if not None
    self.name_ar = translateField(self.name, 'ar')
    self.description_es = translateField(self.description, 'es')
    self.description_ar = translateField(self.description, 'ar')
    super(City, self).save()

这是翻译功能:

def translateField(text, lang):
    try:
        return client.translate(text, lang)
    except:
        pass

问题是我在模型中的许多类中都有上述内容。在每个保存功能中,我对不同的变量做同样的事情。

我可以在这做什么来减少代码量? ' _es'和' _ar'总是附加到我需要返回翻译输出的这些变量。

1 个答案:

答案 0 :(得分:1)

使用setattr

for lang in ["es", "ar"]:
    setattr(self, "name_" + lang, translateField(self.name, lang))
    setattr(self, "description_" + lang, translateField(self.description, 'es'))

如果您有很多字段以及许多语言,那么您甚至可以将其作为嵌套循环。

我可以警告bare except clauses吗?