python中self的动态引用属性
我目前在python(django)函数中有一系列语言检查:python中self的动态引用属性,python,django,Python,Django,我目前在python(django)函数中有一系列语言检查: def __get__(self, instance, owner): if translation.get_language() == 'fr': trans_field = getattr(instance, self.fr_field) else: return getattr(instance, self.en_field) 我要做的是在循环中运行: for language in language
def __get__(self, instance, owner):
if translation.get_language() == 'fr':
trans_field = getattr(instance, self.fr_field)
else:
return getattr(instance, self.en_field)
我要做的是在循环中运行:
for language in languages:
if translation.get_language() == language:
return getattr(instance, self.[language]_field)
else:
return getattr(instance, self.en_field)
我该怎么做?显然,
self.[language]\u字段
是伪代码您已经有了解决方案。使用getattr
getattr(实例,getattr(self,language+''u field'))
您已经有了解决方案。使用getattr
getattr(实例,getattr(self,language+''u field'))
第二次使用getattr
:
return getattr(instance, gettattr(self, '{}_field'.format(language))
再次使用
getattr
:
return getattr(instance, gettattr(self, '{}_field'.format(language))
谢谢是否有一种方法也可以在init函数中分配此变量,即
def uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?现在我也在静态地声明它们:self.en_field=en_field
,self.fr_field=fr_field
您可以使用setattr
,谢谢!是否有一种方法也可以在init函数中分配此变量,即def uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?现在我也在静态地声明它们:self.en_field=en_field
,self.fr_field=fr_field
您可以使用setattr