Инъекция зависимости от колбы - PullRequest
2 голосов
/ 29 октября 2019

Я новичок в колбе и питоне. Я хочу реализовать контейнер для внедрения зависимостей и получить доступ к зависимостям внутри разных модулей. Моя первая попытка выглядит примерно так:

class AppModule(Module):
    def __init__(self, app):
        self.app = app

    """Configure the application."""
    def configure(self, binder):
        client = self.configure_cosmos_client()
        binder.bind(CosmosClient, to=client, scope=singleton)
        binder.bind(Dao, to=Dao, scope=singleton)

    def configure_cosmos_client(self) -> CosmosClient:
        return CosmosClient(
            url_connection=self.app.config.get('ENDPOINT'),
            auth={'masterKey': self.app.config.get('PRIMARYKEY')}
        )

app = Flask(__name__)

injector = Injector([AppModule(app)])
FlaskInjector(app=app, injector=injector)

app.run()

и далее внутри модуля я хочу получить зависимость CosmosClient примерно так:

class Dao:
    cosmos_client = None

    def __init__(self):
        self.cosmos_client = DI.get(CosmosClient)

Есть ли способ добиться этого? Обратите внимание, что «DI.get» является лишь примером, так как я не мог найти, как получить доступ к этим зависимостям, кроме введения зависимостей в маршрут.

1 Ответ

0 голосов
/ 29 октября 2019

Я не уверен, чего именно вы пытаетесь достичь, но не программируйте на python с помощью Java-мышления.

Если вы пытаетесь добавить cosmos_client в приложение иполучить доступ к нему откуда-то еще, возможно, вы захотите сохранить его как атрибут конфигурации в приложении фляги?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...