Каков наиболее питонический способ создания подкласса объекта на основе строкового параметра?Python

Программы на Python
Ответить
Anonymous
 Каков наиболее питонический способ создания подкласса объекта на основе строкового параметра?

Сообщение 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



Подробнее здесь: https://stackoverflow.com/questions/798 ... on-a-strin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»