mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-03-27 13:24:23 +03:00
Add example
This commit is contained in:
parent
005c976cb6
commit
ffca0dac0f
48
examples/providers/factory_deep_init_injections.py
Normal file
48
examples/providers/factory_deep_init_injections.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
"""`Factory` providers deep init injections example."""
|
||||
|
||||
from dependency_injector import providers
|
||||
|
||||
|
||||
class Regularizer:
|
||||
def __init__(self, alpha):
|
||||
self.alpha = alpha
|
||||
|
||||
|
||||
class Loss:
|
||||
def __init__(self, regularizer):
|
||||
self.regularizer = regularizer
|
||||
|
||||
|
||||
class ClassificationTask:
|
||||
def __init__(self, loss):
|
||||
self.loss = loss
|
||||
|
||||
|
||||
class Algorithm:
|
||||
def __init__(self, task):
|
||||
self.task = task
|
||||
|
||||
|
||||
algorithm_factory = providers.Factory(
|
||||
Algorithm,
|
||||
task=providers.Factory(
|
||||
ClassificationTask,
|
||||
loss=providers.Factory(
|
||||
Loss,
|
||||
regularizer=providers.Factory(
|
||||
Regularizer,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
algorithm_1 = algorithm_factory(task__loss__regularizer__alpha=0.5)
|
||||
assert algorithm_1.task.loss.regularizer.alpha == 0.5
|
||||
|
||||
algorithm_2 = algorithm_factory(task__loss__regularizer__alpha=0.7)
|
||||
assert algorithm_2.task.loss.regularizer.alpha == 0.7
|
||||
|
||||
algorithm_3 = algorithm_factory(task__loss__regularizer=Regularizer(alpha=0.8))
|
||||
assert algorithm_3.task.loss.regularizer.alpha == 0.8
|
Loading…
Reference in New Issue
Block a user