Что такое объект django.utils.functional.__ proxy__ и с чем он помогает?

Я наткнулся на объект 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, я видел что-то о ленивой оценке, но слишком много оберток и обернутых объектов, чтобы полностью понять, что происходит. Любые подробности об этом будут высоко оценены.

Ответ 1

Это строка перевода - строка, помеченная как переведенная, но фактический результат перевода которой не определен до тех пор, пока объект не будет использоваться в строке. См. Документацию по Django: https://docs.djangoproject.com/en/dev/ref/unicode/#translated-strings.

Вызов unicode(object) приведет к созданию строки Unicode. Кроме того, если вы вызываете __dict__ объекта, вы можете найти его данные в _proxy____args.