我多次偶然发现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的来源,我看到了一些关于懒惰评估的内容,但是有太多的包装器和包装对象来完全理解正在发生的事情。任何细节都将受到高度赞赏。
答案 0 :(得分:21)
它是一个翻译字符串 - 一个已标记为已翻译但在字符串中使用该对象之前未确定其实际翻译结果的字符串。请参阅Django文档:https://docs.djangoproject.com/en/dev/ref/unicode/#translated-strings。
调用unicode(object)
将生成Unicode字符串。另外,如果您致电该对象的__dict__
,则可以在_proxy____args
下找到其数据。