Как хранить функции динамического класса? - PullRequest
1 голос
/ 27 сентября 2019

У меня есть классы Python, которые должны динамически загружаться во время выполнения.Класс может иметь различные атрибуты и функции.Я создаю такие классы с type:

my_class = type("ClassName", (object, ), {'string_attr': "My String", 
                                          'int_attr': 42,
                                          'my_function': lambda self, a, b: a+b})

Вся информация о классе (имя, родитель, атрибуты, функции) должна храниться в постоянном слое (базе данных).Это позволяет мне изменять атрибуты и функции.

Теперь к моей проблеме: Очевидно, я не могу сохранить лямбда-выражение (объект) в базе данных.Там я вижу два подхода:

  • Сначала я сохраняю лямбда-выражение в виде строкового представления.К сожалению, это требует, чтобы я оценивал лямбда-строки с eval(), когда я генерирую свой класс.

  • Во-вторых, я сериализую лямбда-выражение и сохраняю его.Всякий раз, когда я хочу создать свой класс, я должен десериализовать лямбда-выражение.

В обоих подходах я должен различать атрибуты и функции.Атрибуты могут быть преобразованы напрямую, а функции нуждаются в дальнейшей обработке.

Мой подход совершенно неверен?Есть ли хорошие альтернативы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...