Python état-conception d'une machine

Liées à cette Pile Dépassement de la question C de machine d'état de la conception), pourriez-vous Pile Dépassement de gens partagent votre Python de machine d'état des techniques de conception avec moi (et la communauté)?

Pour le moment, je vais pour un moteur basé sur les éléments suivants:

class TrackInfoHandler(object):
    def __init__(self):
        self._state="begin"
        self._acc=""

    ## ================================== Event callbacks

    def startElement(self, name, attrs):
        self._dispatch(("startElement", name, attrs))

    def characters(self, ch):
        self._acc+=ch

    def endElement(self, name):
        self._dispatch(("endElement", self._acc))
        self._acc=""

    ## ===================================
    def _missingState(self, _event):
        raise HandlerException("missing state(%s)" % self._state)

    def _dispatch(self, event):
        methodName="st_"+self._state
        getattr(self, methodName, self._missingState)(event)

    ## =================================== State related callbacks

Mais je suis sûr qu'il ya des tonnes de façons d'aller à elle tout en tirant parti de Python dynamique de la nature (p. ex. dynamique dispatching).

Je suis, après les techniques de conception pour le "moteur" qui reçoit les "événements" et des "dépêches" à l'encontre de ceux basés sur "l'état" de la machine.

  • Pour paraphraser Adam point, je pense que certaines des informations plus concrètes sur ce que vous essayez d'accomplir en aide.
  • Orendorff: juste assez. J'ai mis à jour la question en conséquence.
InformationsquelleAutor jldupont | 2010-01-20