Я использую функцию Python execfile()
в качестве простого, но гибкого способа работы с файлами конфигурации - по сути, идея такова:
# Evaluate the 'filename' file into the dictionary 'foo'.
foo = {}
execfile(filename, foo)
# Process all 'Bar' items in the dictionary.
for item in foo:
if isinstance(item, Bar):
# process item
Для этого требуется, чтобы у моего файла конфигурации был доступк определению класса Bar
.В этом простом примере это тривиально;мы можем просто определить foo = {'Bar' : Bar}
, а не пустой диктат.Однако в реальном примере у меня есть целый модуль, который я хочу загрузить.Один очевидный синтаксис для этого:
foo = {}
eval('from BarModule import *', foo)
execfile(filename, foo)
Тем не менее, я уже импортировал BarModule
в мой файл верхнего уровня, поэтому мне кажется, что я должен иметь возможность просто определить foo
какмножество вещей, определенных BarModule
, без необходимости проходить через эту цепочку eval
и import
.
Есть ли простой идиоматический способ сделать это?