Python: альтернативы выбору модуля
Я работаю над моей программой GarlicSim, в которой пользователь создает симуляцию, затем он может манипулировать ею по своему усмотрению, а затем он может сохранить ее в файл.
Я недавно пытался реализовать функцию сохранения. Естественная вещь, которая произошла со мной, состоит в том, чтобы засолить Project
объект, который содержит всю симуляцию.
Проблема в том, Project
объект также включает в себя модуль - это "пакет моделирования", который представляет собой пакет / модуль, который содержит несколько критических объектов, в основном функций, которые определяют моделирование. Мне нужно сохранить их вместе с симуляцией, но кажется, что невозможно протравить модуль, как я засвидетельствовал, когда пытался протравить Project
объект и исключение были подняты.
Что было бы хорошим способом обойти это ограничение?
(Следует также отметить, что пакет моделирования динамически импортируется в программу.)
2 ответа
Если в проекте каким-то образом есть ссылка на модуль с необходимыми материалами, это звучит так, как будто вы захотите реорганизовать использование этого модуля в класс внутри модуля. В любом случае это часто лучше, потому что использование модуля для вещей пахнет большой жирной глобализацией. По моему опыту, такая структура приложения приведет только к проблемам.
(Конечно, самым быстрым выходом является сохранение указания модуля вместо самого модуля.)
Если у вас есть исходный код для модулей пакета моделирования, который, как я предполагаю, генерируется динамически, то я бы предложил сериализовать его и реконструировать модули при загрузке. Вы бы сделали это в Project.__getstate__()
а также Project.__setstate__()
методы.