phaggi
@phaggi
лужу, паяю, ЭВМы починяю

Как применить совет гуру по структуре программы, если делать class?

Вычитал совет товарища

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 же еще не инициализирован :/ интерпретатор справедливо ругается.

Подскажите, как замечательный совет товарища Алекса Мартелли правильно использовать?
  • Вопрос задан
  • 320 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы