python-dependency-injector/examples/providers/factory_init_injections.py

37 lines
785 B
Python
Raw Normal View History

2016-06-08 16:39:53 +03:00
"""`Factory` providers init injections example."""
from dependency_injector import providers
class Photo:
...
class User:
def __init__(self, uid: int, main_photo: Photo) -> None:
self.uid = uid
self.main_photo = main_photo
photo_factory = providers.Factory(Photo)
user_factory = providers.Factory(
User,
main_photo=photo_factory,
)
if __name__ == '__main__':
user1 = user_factory(1)
# Same as: # user1 = User(1, main_photo=Photo())
user2 = user_factory(2)
# Same as: # user2 = User(2, main_photo=Photo())
# Context keyword arguments have a priority:
another_photo = Photo()
user3 = user_factory(
uid=3,
main_photo=another_photo,
)
# Same as: # user3 = User(uid=3, main_photo=another_photo)