Обычным примером является использование dict
:
stuff_per_id = {1 : do_X, 2 : do_Y, ...}
def do_instance_specific_stuff(arg):
try:
stuff_per_id[self.id](arg)
except KeyError:
do_Z()
Хотя вы действительно не должны этого делать.Гораздо лучше добавить в вашу модель дополнительное поле, которое указывает, какой код должен быть запущен на arg
для этого экземпляра.В этом случае шаблон dict
может по-прежнему использоваться.
Редактировать : если какая-либо из функций, специфичных для вашего экземпляра, может вызывать KeyError
, то вышеприведенное выполнение do_Z
Если вы не хотите этого, добавьте неиспользуемый аргумент в do_Z
и используйте следующее:
def do_instance_specific_stuff(arg):
try:
f = stuff_per_id[self.id]
except KeyError:
f = do_Z
f(arg)