Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import typing
- class StateBase:
- def __init__(self, owner: "FileSender", state_mgr: "StateManager"):
- self.owner = owner
- self.state_mgr = state_mgr
- class StateManager:
- def __init__(self, owner, base_state_type):
- self.__owner = owner
- self.__base_state_type = base_state_type
- self.current_state: "FileSender_BaseState" = base_state_type(self.__owner, self)
- def transition_to(self, next_state_type: typing.Type["FileSender_BaseState"]):
- next_state = next_state_type(self.__owner, self)
- self.current_state = next_state
- class FileSender_BaseState(StateBase):
- def on_event(self, msg):
- pass
- class FileSender_Idle(FileSender_BaseState):
- def on_event(self, msg):
- self.owner.foo()
- class FileSender_Sending(FileSender_BaseState):
- def on_event(self, msg):
- pass
- class FileSender:
- def __init__(self):
- self._state_mgr = StateManager(self, FileSender_BaseState)
- self._state_mgr.transition_to(FileSender_Idle)
- self._state_mgr.current_state.on_event(None)
- def foo(self):
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement