Как лучше всего создавать объект на основе значения строкового аргумента?
Я загружаю свою конфигурацию из файла и передаю строку в качестве аргумента, который сопоставляется с конкретным конструктором подкласса механизма OCR. Каждый класс в блоке кода ниже. Мое текущее решение — использовать словарь и создать объект на основе переданных в него kwargs. Это проблема дизайна? Должен ли я реорганизовать свою иерархию наследования, чтобы использовать композицию вместо наследования? Я жду любых мыслей.
Я чувствую, что эта передача строки сводит на нет смысл полиморфизма. Всем, у кого есть книги или документы по шаблонам проектирования, посвященным подобным проблемам, пришлите их мне.
Не обращайте внимания на отсутствие проверки ошибок — это всего лишь фрагмент.
def main():
config_data = load_config(config_path_file)
preprocessing_settings = config_data["preprocessing"]
engine_name = preprocessing_settings["ocr_engine"]
engine_config_args = parse_args(preprocessor(f'{engine_name}-settings'))
with create_ocr_engine(engine_name, engine_config_args) as engine:
engine.batch_load_from_dir(data_path)
engine.process_all()
documents = (engine.document_from_batch()
.to_json())
def create_ocr_engine(name, kwargs) -> OcrEngine:
return # instance of specified subclass based on name and kwargs
#
# class TesseractOcrEngine(OcrEngine):
# pass
# class DeepSeekOcrEngine(OcrEngine):
# pass
# class EasyOcrEngine(OcrEngine):
# pass
Подробнее здесь: https://stackoverflow.com/questions/798 ... on-a-strin
Каков наиболее питонический способ создания подкласса объекта на основе строкового параметра? ⇐ Python
Программы на Python
1763532116
Anonymous
Как лучше всего создавать объект на основе значения строкового аргумента?
Я загружаю свою конфигурацию из файла и передаю строку в качестве аргумента, который сопоставляется с конкретным конструктором подкласса механизма OCR. Каждый класс в блоке кода ниже. Мое текущее решение — использовать словарь и создать объект на основе переданных в него kwargs. Это проблема дизайна? Должен ли я реорганизовать свою иерархию наследования, чтобы использовать композицию вместо наследования? Я жду любых мыслей.
Я чувствую, что эта передача строки сводит на нет смысл полиморфизма. Всем, у кого есть книги или документы по шаблонам проектирования, посвященным подобным проблемам, пришлите их мне.
Не обращайте внимания на отсутствие проверки ошибок — это всего лишь фрагмент.
def main():
config_data = load_config(config_path_file)
preprocessing_settings = config_data["preprocessing"]
engine_name = preprocessing_settings["ocr_engine"]
engine_config_args = parse_args(preprocessor(f'{engine_name}-settings'))
with create_ocr_engine(engine_name, engine_config_args) as engine:
engine.batch_load_from_dir(data_path)
engine.process_all()
documents = (engine.document_from_batch()
.to_json())
def create_ocr_engine(name, kwargs) -> OcrEngine:
return # instance of specified subclass based on name and kwargs
#
# class TesseractOcrEngine(OcrEngine):
# pass
# class DeepSeekOcrEngine(OcrEngine):
# pass
# class EasyOcrEngine(OcrEngine):
# pass
Подробнее здесь: [url]https://stackoverflow.com/questions/79823724/what-is-the-most-pythonic-way-to-create-a-subclass-of-an-object-based-on-a-strin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия