У меня есть итеративный алгоритм со значениями, специфичными для каждой итерации. Оба суб-алгоритма могут использовать (и изменить) любую из вычисленных переменных состояния до точки, в которой они называются. К стратегиям, но это раздражает меня, поскольку он также раскрывает некоторые, которые еще предстоит вычисленные значения (в смысле итерации; значение, рассчитанное во время итерации I , не учитывается на итерации I +1 и т. Д.) (Мы называем эти ленивые переменные?). < /p>
В идеале стратегии должны знать только о зависимостях и переменных установленных состояний (с печати, конечно). < /p>
У вас есть лучшие идеи?class MyClass:
def __init__(self, dep1: Dep1, dep2: Dep2, algo1: Algo1, algo2: Algo2):
self.dep1 = dep1
self.dep2 = dep2
self.algo1 = algo1
self.algo2 = algo2
self.state_var1: T1
self.state_var2: T2
self.state_var3: T3
def __call__(self, n: int):
for i in range(n):
# compute state_var1
# compute state_var2
self.algo1(self)
# compute state_var3
self.algo2(self)
# etc
< /code>
Вариант, который я исследовал, - это создание двух протоколов (+ один для зависимостей), которые описывают состояние в каждой соответствующей точке < /p>
class State1(Dependencies, Protocol):
state_var1: T1
state_var2: T2
class State2(Dependencies, Protocol):
state_var3: T3
Тогда подпись Algo1 будет зависеть от состояния1 и algo2 на State2 .
class Algo1(Protocol):
def __call__(self, state: State1): ...
Подробнее здесь: https://stackoverflow.com/questions/794 ... gy-pattern
Итеративный алгоритм на основе классов с шаблоном стратегии с шаблоном стратегии ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Недостатки переключателя\кейса по сравнению с шаблоном стратегии [закрыто]
Anonymous » » в форуме C# - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Итеративный DFS для поиска каждого пути в лабиринте попадает в бесконечный цикл [закрыто]
Anonymous » » в форуме C++ - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-