Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Как динамически создавать классы / функции в модуле?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
У меня есть десяток однотипных классов (классы, создающие однотипные таблицы в БД). Хочется не заниматься копи- пастом, а запустить цикл, который в пространстве имен модуля создаст нужные мне классы.

Тоже касается и функций модуля: для реализаци паттерна Синглтон я использую функцию модуля с ее атрибутом (Саммерфилд, "Python на практике", стр 38). Нужно как-то программно в несколько модулей добавить один и тот же код (причем его нельзя заключить в процедуре общего модуля, потому что разные синглтоны должны инициализировать свои атрибуты).

Примерно представляю как это сделать (надо обращаться к словарю переменных модуля и туда добавлять нужные классы / функции), но конкретный пример позволит не изобретать велосипед.
14 дек 18, 17:35    [21764271]     Ответить | Цитировать Сообщить модератору
 Re: Как динамически создавать классы / функции в модуле?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
AlekseySQL
У меня есть десяток однотипных классов (классы, создающие однотипные таблицы в БД). Хочется не заниматься копи- пастом, а запустить цикл, который в пространстве имен модуля создаст нужные мне классы.

Смотри type(name, bases, dict)
14 дек 18, 17:52    [21764306]     Ответить | Цитировать Сообщить модератору
 Re: Как динамически создавать классы / функции в модуле?  [new]
AlekseySQL
Member

Откуда:
Сообщений: 952
NekZ
AlekseySQL
У меня есть десяток однотипных классов (классы, создающие однотипные таблицы в БД). Хочется не заниматься копи- пастом, а запустить цикл, который в пространстве имен модуля создаст нужные мне классы.

Смотри type(name, bases, dict)


Ну это понятно, вопрос в том, как полученный с помощью type объект положить в модуль.
14 дек 18, 17:59    [21764313]     Ответить | Цитировать Сообщить модератору
 Re: Как динамически создавать классы / функции в модуле?  [new]
NekZ
Member

Откуда: Санкт-Петербург
Сообщений: 3546
AlekseySQL
NekZ
пропущено...

Смотри type(name, bases, dict)


Ну это понятно, вопрос в том, как полученный с помощью type объект положить в модуль.

Подозреваю что
setattr(sys.modules[__name__], 'MyType', type(...))

Но это извращение. Потом поддерживать и дебажить это будет очень весело.
14 дек 18, 18:13    [21764331]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить