from abc import abstractmethod, ABC from models import Product from .article_attribute_getter import ArticleAttributeGetter from .client_name_attribute_getter import ClientNameAttributeGetter from .name_attribute_getter import NameAttributeGetter class BaseAttributeGetter(ABC): @abstractmethod def get_value(self, product: Product): pass class AttributeWriterFactory: @staticmethod def get_writer(key: str): match key: case 'name': return NameAttributeGetter() case 'article': return ArticleAttributeGetter() case 'client.name': return ClientNameAttributeGetter()