"""`Factory` provider init injections example.""" from dependency_injector import containers, providers class Photo: ... class User: def __init__(self, uid: int, main_photo: Photo) -> None: self.uid = uid self.main_photo = main_photo class Container(containers.DeclarativeContainer): photo_factory = providers.Factory(Photo) user_factory = providers.Factory( User, main_photo=photo_factory, ) if __name__ == '__main__': container = Container() user1 = container.user_factory(1) # Same as: # user1 = User(1, main_photo=Photo()) user2 = container.user_factory(2) # Same as: # user2 = User(2, main_photo=Photo()) another_photo = Photo() user3 = container.user_factory( uid=3, main_photo=another_photo, ) # Same as: # user3 = User(uid=3, main_photo=another_photo)