Как стать автором
Обновить

Комментарии 8

Крайне сомнительный ответ. По делу там вообще 0.
НЛО прилетело и опубликовало эту надпись здесь
Подумаю над упрощением, спасибо.
Собрал простенький пример:

from dependency_injector import containers, providers


class ApiClient:

    def __init__(self, api_key: str, timeout: int):
        self.api_key = api_key
        self.timeout = timeout


class Service:

    def __init__(self, api_client: ApiClient):
        self.api_client = api_client


class Container(containers.DeclarativeContainer):

    config = providers.Configuration()

    api_client = providers.Singleton(
        ApiClient,
        api_key=config.api_key,
        timeout=config.timeout,
    )

    service = providers.Factory(
        Service,
        api_client=api_client,
    )


if __name__ == '__main__':
    container = Container()
    container.config.from_yaml('config.yml')

    service = container.service()

    assert isinstance(service.api_client, ApiClient)
Интересно, спасибо. Не знал о нём.
данный метод очень хорошо подходит для плагинов. появился в Python 3.6
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории