динамическое создание объектов, то есть превращение строки в вызов имени класса в python - PullRequest
0 голосов
/ 20 апреля 2020

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

  1. Я сохраняю все пользовательские переменные ввода в текстовом файле.
  2. Я снова открываю свой проект (и текстовый файл), и все входные значения пользователя все еще доступны. Некоторые из этих переменных являются объектами классов, которые я создал.

Чтобы сохранить значения на шаге 1, я вытащил имя класса объекта и все переменные, связанные с ним.

Итак, зная имя класса, как мне объявить новый объект и загрузить все мои сохраненные переменные? Другими словами, как мне превратить строку в имя класса, чтобы инициировать новый объект?

cn = myclassname

до

newobj = cn() 

1 Ответ

0 голосов
/ 21 апреля 2020

Вот что вы можете сделать:

  • Ваши классы должны иметь возможность экспортировать параметры, которые вы хотите сохранить в словаре. Для этого используйте модуль проверки и класс mixin.

  • Сохраните данные в формате yaml / json; Дикты обрабатываются очень хорошо. Ключи являются именами классов. Несколько объектов одного и того же класса входят в списки.

  • Создайте класс только для воссоздания объектов. Это должно иметь справочную таблицу (словарь) с именами классов как dict, классами как значением. Выполните итерацию чтения из файла и создайте объекты.

...