Advertisement
Guest User

Untitled

a guest
Dec 8th, 2022
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | Source Code | 0 0
  1. import typing
  2.  
  3.  
  4. class StateBase:
  5.     def __init__(self, owner: "FileSender", state_mgr: "StateManager"):
  6.         self.owner = owner
  7.         self.state_mgr = state_mgr
  8.  
  9.  
  10. class StateManager:
  11.     def __init__(self, owner, base_state_type):
  12.         self.__owner = owner
  13.         self.__base_state_type = base_state_type
  14.         self.current_state: "FileSender_BaseState" = base_state_type(self.__owner, self)
  15.  
  16.     def transition_to(self, next_state_type: typing.Type["FileSender_BaseState"]):
  17.         next_state = next_state_type(self.__owner, self)
  18.         self.current_state = next_state
  19.  
  20.  
  21. class FileSender_BaseState(StateBase):
  22.     def on_event(self, msg):
  23.         pass
  24.  
  25.  
  26. class FileSender_Idle(FileSender_BaseState):
  27.     def on_event(self, msg):
  28.         self.owner.foo()
  29.  
  30.  
  31. class FileSender_Sending(FileSender_BaseState):
  32.     def on_event(self, msg):
  33.         pass
  34.  
  35.  
  36. class FileSender:
  37.     def __init__(self):
  38.         self._state_mgr = StateManager(self, FileSender_BaseState)
  39.         self._state_mgr.transition_to(FileSender_Idle)
  40.  
  41.         self._state_mgr.current_state.on_event(None)
  42.  
  43.     def foo(self):
  44.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement