Итеративный алгоритм на основе классов с шаблоном стратегии с шаблоном стратегииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Итеративный алгоритм на основе классов с шаблоном стратегии с шаблоном стратегии

Сообщение Anonymous »

У меня есть итеративный алгоритм со значениями, специфичными для каждой итерации. Оба суб-алгоритма могут использовать (и изменить) любую из вычисленных переменных состояния до точки, в которой они называются. К стратегиям, но это раздражает меня, поскольку он также раскрывает некоторые, которые еще предстоит вычисленные значения (в смысле итерации; значение, рассчитанное во время итерации 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»