Я хотел бы захватить код из реальных объектов python. Это противоположная идея AST и parse, у меня есть объект в памяти, и я хочу воссоздать исходный код. Я не хочу, чтобы добраться до байт-кода, который чрезмерный, я просто хочу, представление кода, который сделал объект:восстановление источника из объектов
In [24]: from django.apps import apps
In [25]: x= apps.get_app('accounts')
In [26]: x
Out[26]: <module 'mysite.accounts.models' from '/home/cchilders/work_projects/mysite/mysite/accounts/models.py'>
In [27]: x.
x.BusinessUnit x.models
In [35]: bizunit = x.BusinessUnit
In [36]: type(bizunit)
Out[36]: django.db.models.base.ModelBase
import something
bizunit_code = something.something(bizunit)
Я хочу, чтобы источник всех моделей, но с использованием асты кажется слишком волосатыми, особенно поскольку django предоставляет модуль apps
для захвата всех моделей. Теперь мне просто нужно Отменить перевод его
Спасибо
он должен работать для любого объекта, или только ограниченный набор? вы ожидаете получить доступ к источникам? Если у вас есть доступ, вы можете написать парсер, который ищет строку 'class' в пространстве имен объекта. Если набор очень ограничен и вам нужен быстрый тест, вы всегда можете переопределить метод __repr__' этих объектов с помощью строки, которую хотите стать. Дайте мне знать, если что-нибудь из этого будет в порядке, чтобы попробовать –
nevermind, Симеон прибил его –
, он должен работать для всех пользовательских письменных моделей. Я могу захватить все каталоги в основной папке проекта, чтобы проверить, является ли приложение, которое я получаю, обычным или сторонним, но быстрее использовать приложения и просто проверить, находится ли модель в нашем источнике – codyc4321