Короткий ответ: нет - потому что строковое представление объекта создается модулем, в котором он живет, и этот модуль не знает, как вы его импортировали.
(при условии, что я правильно понимаю ваш вопрос).
То, что вы пытаетесь сделать, - это создать некоторую структуру объектов (в данном случае из модуля dash_html_components
), а затем создать программу на Python, которая воспроизводит эту структуру.Это правда, что во многих случаях print(some_python_object)
создает строку, которая является допустимым выражением Python, и это выражение воссоздает объект при выполнении.Однако это никоим образом не гарантируется и на них нельзя полагаться - большинство объектов Python просто делают все возможное, чтобы создать такую строку.
В указанном вами конкретном случае html.Div("1")
является выражениемкоторый возвращает один объект типа Div
из модуля dash_html_components
.Реализация этого объекта возвращает почти допустимую строку «re-create-me»: а именно Div("1")
.Это лучшее, что он может сделать - код для создания этой строки находится в модуле dash_html_components
, и если бы html.Div("1")
был запущен в этом же модуле, он действительно воссоздает объект.Однако этот модуль понятия не имеет, как к нему обращаться с вашей точки зрения.Возможно, вы сделали import dash_html_components
(тогда код 're-create' был бы dash_html_components.Div("1")
. Или вы могли бы сделать import dash_html_components as h
, тогда вам нужно h.Div("1")
и т. Д. Реализация объекта не имеет способа 'загляните в ваш код, чтобы узнать, как вы решили назвать модуль для собственного использования.
В общем:
- , если вы используете
print(object)
(или любое другое выражение, котороеприводит к выполнению repr(object)
для создания строки), используйте результат только для собственного просмотра / отладки. Не гарантируется создание корректного кода Python. - , если ваша цель - создать программу Python,Лучше всего сделать это, используя манипуляции со строками (как предлагается в других ответах здесь).