Как легко создать экземпляры дочерних классов из многочисленных дочерних классов, каждый из которых имеет постоянное колPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как легко создать экземпляры дочерних классов из многочисленных дочерних классов, каждый из которых имеет постоянное кол

Сообщение Anonymous »

В качестве примера предположим, что у меня есть класс Letters, который является родительским для 26 классов A, B, C... Z, каждый из которых, в свою очередь, является родительским для N=2 классов UpperA, LowerA, UpperB, LowerB и т. д.
Я хочу определить следующее функция в Letters

Код: Выделить всё

def LetterFactory(font: str, letter: str, lettercase: str):
match letter:
case 'A':
if lettercase == 'upper':
return UpperA(font)
elif lettercase == 'lower':
return LowerA(font)
case 'B':
...
Есть ли способ избежать необходимости писать if LetterCase 52 раза?
Я придумал два решения оба варианта кажутся неоптимальными:
  • Используйте словарь, например

    Код: Выделить всё

    alphabet = {
    "A" : {
    "upper" : UpperA,
    "lower" : LowerA
    },
    "B" : {
    ...
    
который по-прежнему сталкивается с той же проблемой копирования 26 раз.
  • Выберите класс на основе шаблона именования классов

    Код: Выделить всё

    def LetterFactory(font: str, letter: str, lettercase: str):
    class_name = lettercase + letter
    letter_class = globals()[class_name]
    return letter_class(font)
    
что очень некрасиво
Есть ли решение получше?

Подробнее здесь: https://stackoverflow.com/questions/792 ... es-which-e
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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