国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 實用工具狀態機transitions

瀏覽:5日期:2022-07-04 15:58:31

說明

1. 狀態機是一個非常實用的理論。在涉及到復雜的場景,建立狀態機模型,能帶來極大的方便。比如,網絡連接、模型狀態、業務邏輯。 2. 狀態機并不復雜, 重要的是它的思想,能夠極大減輕復雜度。使用時關鍵在于定義好事件和動作。

基本概念

State: 狀態 Event: 事件. 事件觸發狀態變換 Action: 動作. event發生前或后執行的動作 transition: 變換. 狀態變換

github

https://github.com/pytransitions/transitions

安裝

pip install transitions

簡單示例

# 連接協議狀態機from transitions.extensions import HierarchicalMachine as Machinefrom transitions.extensions.nesting import NestedState class ConnectionStateMachine: '''Connection state machine.''' def __init__(self, callbacks=None):''':param callbacks: callbacks for the state machine'''self.callbacks = {} # 定義狀態self.states = ['STATE_NOT_CONNECTED', { ’name’: 'STATE_CONNECTED', # 狀態名 ’on_enter’: self._on_enter_CONNECTED, # 進入狀態觸發 ’on_exit’: self._on_exit_CONNECTED, # 退出狀態觸發 ’children’: [ # 狀態嵌套'STATE_NOT_SELECTED',{ ’name’: 'STATE_SELECTED', ’on_enter’: self._on_enter_CONNECTED_SELECTED} ] }] # transition 1self.machine = Machine(model=self, states=self.states, initial='STATE_NOT_CONNECTED', auto_transitions=False) if callbacks: self.callbacks = callbacks # 定義狀態變換self.machine.add_transition(’connect’, 'STATE_NOT_CONNECTED', 'STATE_CONNECTED_NOT_SELECTED') # transition 2self.machine.add_transition(’disconnect’, 'STATE_CONNECTED', 'STATE_NOT_CONNECTED') # transition 3self.machine.add_transition(’select’, 'STATE_CONNECTED_NOT_SELECTED', 'STATE_CONNECTED_SELECTED') # transition 4self.machine.add_transition(’deselect’, 'STATE_CONNECTED_SELECTED', 'STATE_CONNECTED_NOT_SELECTED') # transition 5self.machine.add_transition(’timeoutT7’, 'STATE_CONNECTED_NOT_SELECTED', 'STATE_NOT_CONNECTED') # transition 6 # 事件觸發的動作 def _on_enter_CONNECTED(self):if 'on_enter_CONNECTED' in self.callbacks: self.callbacks['on_enter_CONNECTED']() def _on_exit_CONNECTED(self):if 'on_exit_CONNECTED' in self.callbacks: self.callbacks['on_exit_CONNECTED']() def _on_enter_CONNECTED_SELECTED(self):if 'on_enter_CONNECTED_SELECTED' in self.callbacks: self.callbacks['on_enter_CONNECTED_SELECTED']()

定義狀態機

# 一般都是兩種:不嵌套、嵌套from transitions import Machine #不嵌套from transitions.extensions import HierarchicalMachine as Machine # 嵌套 # 檢查狀態machine.statemachine.is_<state_name>()

定義狀態

# 狀態可以是三種類型: 對象、字符串、字典from transitions import Statestates = [ State(name='solid'), # 對象 'liquid', # 字符串 {'name': 'gas'} # 字典]

定義變換

# 定義函數machine.add_transition(trigger, source, dest, )trigger(str) 方法名,觸發狀態轉換source(str or list) 源狀態dest(str) 目標狀態 # 加上變換machine.add_transition(trigger='wake_up', source='asleep', dest='hanging out')machine.add_transition(’work_out’, ’hanging out’, ’hungry’)machine.add_transition(’nap’, ’*’, ’asleep’) # 從任意狀態變為asleep

以上就是python 實用工具狀態機transitions的詳細內容,更多關于python transitions的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚州免费视频 | 欧美在线乱妇一级毛片 | 免费一级欧美在线观看视频片 | 一级做a爰片久久毛片苍井优 | 97免费公开视频 | 欧美精品亚洲 | 久久国产精品久久国产精品 | 亚洲手机国产精品 | 欧美人一级淫片a免费播放 欧美人与z0z0xxxx | 国产精品99久久99久久久看片 | 国产综合亚洲专区在线 | 一色屋精品亚洲香蕉网站 | 亚洲夜夜爽 | 92精品国产成人观看免费 | 国产精品精品国产一区二区 | 亚洲欧美日韩中文字幕在线一区 | 国产三级久久 | 精品亚洲成a人在线观看 | 国产精品视频自拍 | 综合亚洲一区二区三区 | 国产亚洲精品午夜高清影院 | 玖玖爱精品 | 黄a视频在线观看 | 国产一区二区三区高清视频 | 色噜噜狠狠大色综合 | 日本一级毛片片在线播放 | 国产精品视频免费一区二区三区 | 欧美日韩在线观看一区 | 男女男免费视频网站国产 | 亚洲欧美日韩高清在线看 | 精品欧美一区二区在线观看 | 亚洲视频中文字幕在线观看 | 久草视屏 | 日韩欧美综合在线二区三区 | 午夜宅男在线永远免费观看网 | 免费看日韩欧美一级毛片 | 国产精品久久久久毛片 | 成年人免费黄色 | 国产在线观a免费观看 | 九九久久久 | 国产精品久久久久久久久福利 |