"""Container injecting ``self`` example.""" from dependency_injector import containers, providers class Service: def __init__(self, name: str): self.name = name class ServiceDispatcher: def __init__(self, container: containers.Container): self.container = container def get_services(self): for provider in self.container.traverse(types=[providers.Factory]): yield provider() class Container(containers.DeclarativeContainer): __self__ = providers.Self() service1 = providers.Factory(Service, name='Service 1') service2 = providers.Factory(Service, name='Service 2') service3 = providers.Factory(Service, name='Service 3') dispatcher = providers.Singleton(ServiceDispatcher, __self__) if __name__ == '__main__': container = Container() dispatcher = container.dispatcher() for service in dispatcher.get_services(): print(service.name)