Форум сайта python.su
0
в пхп это бы выглядело так:
$name = 'test';
include($name . '.php');
$obj = new $name();
# mod_test.py, mod_test2.py - файлы
# test(), test2() - классы в них
mods = os.listdir('include')
mods = [file.replace('mod_', '').replace('.py', '') for file in mods if 'mod_' in file and '.py' in file]
for mod in mods:
from include.mod_joiner import joiner
self.mod = mod(self)
#from getattr(include, 'mod_' + mod) import mod - не хочет работать
Офлайн
0
функция __import__
Офлайн
0
спасибо
появилась другая проблема:
for mod in mods:
# mod == 'joiner'
modi = __import__('include.mod_' + mod, globals(), locals(), fromlist=True)
print(modi) # <module 'include.mod_joiner' from ...>
m = modi() # TypeError: 'module' object is not callable
print(modi)
m = object.__new__(joiner)
setattr(self, mod, m)
Офлайн
32
Игнатего не надо создавать, его надо использовать.
как создать объект этого полученного модуля?
Офлайн
0
отлично, спасибо
вот код подгрузки модулей:
mods = os.listdir('include')
mods = [file.replace('mod_', '').replace('.py', '') for file in mods if 'mod_' in file and '.py' in file]
for mod in mods:
modi = __import__('include.mod_' + mod, globals(), locals(), fromlist=True)
m = getattr(modi, mod)(self)
setattr(self, mod, m)Офлайн