Вычитал совет товарища
Alex Martelli
(широко известного в узких кругах гуру Python) о том, что код вместо if/elif/else лучше организовывать так:
import pygame.locals as pygl
dispatch = {pygl.QUIT: exit_game, # whatever else
}
f = dispatch.get(event.type)
if f is None: # the "else" case"
...
else: f()
Идея мне понравилась, но когда дошел до практики, а именно попытался сделать класс MyGame, в котором сделать всё предложенное, столкнулся со следующими проблемами:
1. если я помещаю dispatch куда-то внутри класса, например в __init__ как атрибут, или в како-нибудь другой метод, то при инициализации экземпляра класса он срабатывает.
class MyGame:
def __init__(self):
self.dispatch = {pygl.QUIT: self.exit_game, # whatever else
...}
Т.е. сразу же происходит exit_game.
2. если я помещаю его просто в переменную в классе, типа:
class MyGame:
dispatch = {pygl.QUIT: self.exit_game, # whatever else
...}
def __init(self):
...
или вообще где-то вне класса, то self же еще не инициализирован :/ интерпретатор справедливо ругается.
Подскажите, как замечательный совет товарища Алекса Мартелли правильно использовать?