1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import random
from abc import ABC
from abc import abstractmethod
class Strategy(ABC):
@abstractmethod
def calculate(self, a, b):
raise NotImplemented
class Addition(Strategy):
def calculate(self, a, b):
return a + b
class Soustraction(Strategy):
def calculate(self, a, b):
return a - b
class Factory:
strategies = {"addition": Addition, "soustraction": Soustraction}
def __init__(self, strategy_name="addition"):
assert strategy_name in Factory.strategies
self.__strategy: Strategy = Factory.strategies[strategy_name]()
def __call__(self, a, b):
return self.__strategy.calculate(a, b)
obj_list = [
Factory(random.choice(list(Factory.strategies.keys()))) for _ in range(10)
] # Création de 10 opérateurs
results = [
obj(random.randint(1, 100), random.randint(1, 100)) for obj in obj_list
] # Résultats des opérations entre deux nombres aléatoires
print(results) # par exemple : [ -8, 173, -68, 82, 50, 0, 80, 186, 191, 108] |
Partager