mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 07:57:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """`Factory` providers init injections example."""
 | |
| 
 | |
| import collections
 | |
| 
 | |
| import dependency_injector.providers as providers
 | |
| 
 | |
| 
 | |
| CreditCard = collections.namedtuple('CreditCard', [])
 | |
| Photo = collections.namedtuple('Photo', [])
 | |
| User = collections.namedtuple('User', ['uid', 'main_photo', 'credit_card'])
 | |
| 
 | |
| # User, Photo and CreditCard factories:
 | |
| credit_cards_factory = providers.Factory(CreditCard)
 | |
| photos_factory = providers.Factory(Photo)
 | |
| users_factory = providers.Factory(User,
 | |
|                                   main_photo=photos_factory,
 | |
|                                   credit_card=credit_cards_factory)
 | |
| 
 | |
| # Creating several User objects:
 | |
| user1 = users_factory(1)
 | |
| # Same as: user1 = User(1,
 | |
| #                       main_photo=Photo(),
 | |
| #                       credit_card=CreditCard())
 | |
| user2 = users_factory(2)
 | |
| # Same as: user2 = User(2,
 | |
| #                       main_photo=Photo(),
 | |
| #                       credit_card=CreditCard())
 | |
| 
 | |
| 
 | |
| # Context keyword arguments have priority on keyword argument injections:
 | |
| main_photo = Photo()
 | |
| credit_card = CreditCard()
 | |
| 
 | |
| user3 = users_factory(3,
 | |
|                       main_photo=main_photo,
 | |
|                       credit_card=credit_card)
 | |
| # Same as: user3 = User(3,
 | |
| #                       main_photo=main_photo,
 | |
| #                       credit_card=credit_card)
 |