Что такое объект 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
.