В методе класса у меня есть набор возможных параметров для одного ключевого слова, каждый из которых имеет другой алгоритм для вычисления чего-то. Чтобы проверить, какой вариант был добавлен в ключевое слово, я создал цепочку if, elif, иначе тоже найду ключевое слово.Опуская long 'if, elif, elif, else' from keyword-arguments
class MyClass:
def my_method(self, my_parameter, my_keyword='spacial'):
if my_keyword == 'spacial':
print('Cool stuf')
elif my_keyword == 'discoidal':
print('OTHER cool stuff')
elif my_keyword == 'temporal':
print('You get the gist')
else:
print('not in options list')
По-моему, это не очень элегантный способ кодирования этого. Особенно, если список опций продолжает расти. Есть ли способ опустить список команд if, elif, elif, else?
'='? Ты уверен? И где скрылся 'def'? И что там делают струнные литералы? ... При отправке кода примера вы всегда должны делать это так же правильно, как вы можете это сделать. Теперь я отредактировал код для вас, к чему вы, вероятно, * намеревались это сделать. – Carpetsmoker
Всегда оставляйте рабочий код ... – wenzul
Каноническая замена для множества 'elif' - это словарь 'lookup = {'spacial': 'Cool stuf', 'discoidal': 'OTHER cool stuff'}', а затем ' print (lookup [my_keyword]) ', но вам, возможно, придется реорганизовать в отдельные функции, чтобы реализовать это с нетривиальным примером. – jonrsharpe