Динамически загружать классы и получать ссылку

bluppfisk спросил: 26 ноября 2017 в 04:55 в: python

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)
            })

Однако приведенный выше код и множество различных перестановок я пробовал всегда в итоге он интерпретирует мои намеченные ссылки на классы как строки.


0 ответов