0

Ошибка в легковесе python?

akariasmorum 6 months ago updated by Alexander Shvets 6 months ago 0

Приветствую, нет ли у вас ошибки у паттерне "Легковес"?

https://refactoring.guru/ru/design-patterns/flyweight/python/example#lang-features

class FlyweightFactory():
   
    def __init__(self, initial_flyweights: Dict) -> None:
        for state in initial_flyweights:
            self._flyweights[self.get_key(state)] = Flyweight(state)

Конструктор Класса принимает на входе параметр initial_flyweights: Dict

В коде туда передаем массив

factory = FlyweightFactory([
        ["Chevrolet", "Camaro2018", "pink"],
        ["Mercedes Benz", "C300", "black"],
        ["Mercedes Benz", "C500", "red"],
        ["BMW", "M5", "red"],
        ["BMW", "X6", "white"],
    ])

Отсюда же, вытекает ошибка в самом конструкторе:

    def __init__(self, initial_flyweights: Dict) -> None:
        for state in initial_flyweights:
            self._flyweights[self.get_key(state)] = Flyweight(state)
self.get_key(state)

state будет list[str] и мы не сможем применить get_key для массива

def get_key(self, state: Dict) -> str:
        """
        Возвращает хеш строки Легковеса для данного состояния.
        """

        return "_".join(sorted(state))