того, чтобы делать вот так:
                  
                  
                  
                  
                  
                  class B:
                  
                  
                   pass
                  
                  
                  
                  
                  
                  class C:
                  
                  
                   pass
                  
                  
                  
                  
                  
                  class A: # реализует некую бизнес логику
                  
                  
                   def __init__(self):
                  
                  
                    self.attr1 = B()
                  
                  
                    self.attr2 = C()
                  
                  
                  
                  
                  
                  Лучше делать вот так:
                  
                  
                  
                  
                  
                  
                  
                  
                  class B:
                  
                  
                   pass
                  
                  
                  
                  
                  
                  class C:
                  
                  
                   pass
                  
                  
                  
                  
                  
                  class DI:
                  
                  
                   def __init__(self):
                  
                  
                    self.classB = B()
                  
                  
                    self.classC = C()
                  
                  
                  
                  
                  
                  class A: # реализует некую бизнес логику
                  
                  
                   def __init__(self):
                  
                  
                    self.business_logic = DI()
                  
                  
                  
                  
                  
                  ---
                  
                  
                  P.S. В таком случае тестим мокая DI, а не патчем init (или любой другой зависмой функции).
                  
                  
                
Что такое di? выглядит как стратегия
Dependency Injecton
Не вижу dependency injection тут
ну он типа имеет в виду что B C это депенденси классы
Не вижу чтобы тут что-то инжектирвалось
Понял, курю дальше
Подсказка: параметры инита
DI это когда ты делаешь слабую связанность с чем-либо, в твоем случае с источником данных. Тебе нужно либо сразу данные передать в конструктор, либо указать как их получить
https://pastebin.com/p2WUyULC Собственно есть ощущение, что что-то все еще не так.
Обсуждают сегодня