Я хочу определить следующее функция в 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':
...
Я придумал два решения оба варианта кажутся неоптимальными:
- Используйте словарь, например
Код: Выделить всё
alphabet = { "A" : { "upper" : UpperA, "lower" : LowerA }, "B" : { ...
- Выберите класс на основе шаблона именования классов
Код: Выделить всё
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