2016-06-08 16:39:53 +03:00
|
|
|
"""`Factory` providers init injections example."""
|
|
|
|
|
2020-09-01 04:26:21 +03:00
|
|
|
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)
|