什么是django.utils.functional.__proxy__对象,它有什么作用?

20

我多次遇到了一个 django.utils.functional.__proxy__ 对象,上一次是在以下代码片段中:

def formfield_for_choice_field(self, db_field, request, **kwargs):
    print db_field.help_text

(打印结果为<django.utils.functional.__proxy__ object at 0x7fc6940106d0>

现在,为什么这些东西被包装在这个对象周围?它的主要目的是什么?更重要的是,我如何访问代理对象后面的值?我查看了Django的源代码,看到了一些关于惰性求值的东西,但有太多的包装器和包装对象无法完全理解正在发生的事情。如果有任何详细信息,将不胜感激。


注意:赋值语句 myMessage = _("This is a message") 也会导致一个 __proxy__ 对象(注意下划线“_”)。 - Matt
1个回答

32
这是一个翻译字符串——一种被标记为已翻译但其实际翻译结果在使用字符串时才确定的字符串。请参阅Django文档:https://docs.djangoproject.com/en/dev/ref/unicode/#translated-strings
调用unicode(object)将生成一个Unicode字符串。此外,如果您调用对象的__dict__,您可以在_proxy____args下找到其数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接