Ответы пользователя по тегу Python
  • Что предпочтительнее: наследование или обёртка?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Парсер в данном случае просто интерфейс. Поскольку Python - язык с динамической типизацией, то наследование или обертки не требуются вовсе. Просто все конкретные парсеры должны реализовать подразумеваемый интерфейс:
    class CsvParser:
        def parse(self, file_name):
    
    class XlsParser:
        def parse(self, file_name);


    Экземпляры конкретных парсеров, по мере их появления складываем в обычный словарь, где ключ - это расширение файла, под которое заточен парсер.

    { 'csv': CsvParser(), 'xls': XlsParser(), 'xml': XmlParser() }


    В конечном итоге можно реализовать поставщик парсеров, который будет выбирать подходящий парсер из вышеозначенного словаря, используя расширение имени файла:

    class ParserProvider:
            def provide(file_name):
    Ответ написан
    Комментировать