Я пытаюсь выучить понятие «внедрение зависимости» в Python. Во-первых, если у кого-то есть хорошая ссылка, пожалуйста, укажите мне.
В качестве проекта я использовал вариант изменения логики c и форматирования на основе параметров, переданных в команду linux "mtr"
Класс клиента зависимости - MtrRun. Первоначальный сервис внедрения зависимостей - DefaultRgx (я планирую добавить еще пару). Интерфейс инъекции - MtrOptions. А класс инжекторов просто называется Injector.
class MtrRun(MtrOptions): # Dependency injection client
def __init__(self, MtrOptions, options, out):
self.MtrOptions = MtrOptions
self.options = options
self.out = out
def mtr_options(self, options, out):
return self.MtrOptions.mtr_options(options, out)
class DefaultRgx(MtrOptions): # Dependency injection service
def __init__(self, options):
self.options = None
def mtr_options(self, options, out):
pass # code abbreviated for clarity
class MtrOptions(): # Dependency injection interface
def __init__(self, svc):
self.svc = svc
def mtr_options(self, options, out):
return self.svc.mtr_options(options, out)
class Injector(): # Dependency injection injector
def inject(self):
MtrOptions = MtrOptions(DefaultRgx())
mtr_result = MtrRun(MtrOptions)
Этот фрагмент не удалит пух. Моя IDE утверждает, что класс MtrOptions, переданный клиенту и сервису внедрения, не определен. Когда я пытаюсь разрешить его, создается новый класс MtrOptions, но ошибка сохраняется. Я уверен, что просто не знаю, что я делаю. Концептуально я допускаю слабую гр asp. Помощь приветствуется.