Python делает мой орех. Я бы не подумал, что может быть так сложно загрузить несколько модулей и создать экземпляры классов внутри динамически. Я прочитал несколько других вопросов здесь, но ни одно из предложенных решений мне не подходит.
Структура моей папки
./coin.py
./exchanges/
/bittrex.py (contains Bittrex class)
/kraken.py (contains Kraken class)
...
Моя цель
Чтобы динамически импортировать каждый из этих модулей и получить как можно меньше ссылок на эти классы, чтобы я мог их создать, используя как можно меньше кода и без каких-либо хакерских средств. и получить их атрибуты.
Мой текущий код
import glob, exchanges, dirfiles, isfile, inspectdirfiles = glob.glob(dirname(__file__) + "/exchanges/*.py")
__all__ = [ basename(f)[:-3] for f in dirfiles if isfile(f) and not f.endswith('__init__.py')]class Indicator(object):
def __init__(self):
for exchange in __all__:
class_name = exchange.capitalize()
class_ = getattr(exchange, class_name) self.EXCHANGES.append({
'code': exchange,
'name': class_name,
'instance': class_(self)
})
Однако приведенный выше код и множество различных перестановок я пробовал всегда в итоге он интерпретирует мои намеченные ссылки на классы как строки.