午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 實(shí)用工具狀態(tài)機(jī)transitions

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

說(shuō)明

1. 狀態(tài)機(jī)是一個(gè)非常實(shí)用的理論。在涉及到復(fù)雜的場(chǎng)景,建立狀態(tài)機(jī)模型,能帶來(lái)極大的方便。比如,網(wǎng)絡(luò)連接、模型狀態(tài)、業(yè)務(wù)邏輯。 2. 狀態(tài)機(jī)并不復(fù)雜, 重要的是它的思想,能夠極大減輕復(fù)雜度。使用時(shí)關(guān)鍵在于定義好事件和動(dòng)作。

基本概念

State: 狀態(tài) Event: 事件. 事件觸發(fā)狀態(tài)變換 Action: 動(dòng)作. event發(fā)生前或后執(zhí)行的動(dòng)作 transition: 變換. 狀態(tài)變換

github

https://github.com/pytransitions/transitions

安裝

pip install transitions

簡(jiǎn)單示例

# 連接協(xié)議狀態(tài)機(jī)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 = {} # 定義狀態(tài)self.states = ['STATE_NOT_CONNECTED', { ’name’: 'STATE_CONNECTED', # 狀態(tài)名 ’on_enter’: self._on_enter_CONNECTED, # 進(jìn)入狀態(tài)觸發(fā) ’on_exit’: self._on_exit_CONNECTED, # 退出狀態(tài)觸發(fā) ’children’: [ # 狀態(tài)嵌套'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 # 定義狀態(tài)變換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 # 事件觸發(fā)的動(dòng)作 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']()

定義狀態(tài)機(jī)

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

定義狀態(tài)

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

定義變換

# 定義函數(shù)machine.add_transition(trigger, source, dest, )trigger(str) 方法名,觸發(fā)狀態(tài)轉(zhuǎn)換source(str or list) 源狀態(tài)dest(str) 目標(biāo)狀態(tài) # 加上變換machine.add_transition(trigger='wake_up', source='asleep', dest='hanging out')machine.add_transition(’work_out’, ’hanging out’, ’hungry’)machine.add_transition(’nap’, ’*’, ’asleep’) # 從任意狀態(tài)變?yōu)閍sleep

以上就是python 實(shí)用工具狀態(tài)機(jī)transitions的詳細(xì)內(nèi)容,更多關(guān)于python transitions的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产日韩欧美 | 成人午夜影院在线观看 | 天堂av影院 | 日韩成人激情 | 麻豆国产原创 | 成人免费国产 | 国产精品久久久久久久久久免费 | 91免费版黄色| www.黄色在线观看 | 国产精品xxxxxx | 在线日韩中文字幕 | 99热综合| 久久久小视频 | 手机av在线免费观看 | 你懂的视频在线播放 | 久久久五月天 | 国产精品揄拍500视频 | 中文字幕av一区二区三区谷原希美 | 亚洲一区二区三区在线观看视频 | 色综合88| 成年人黄色小视频 | 天天综合色| 亚洲九九精品 | 久久黄色网址 | 成年人免费网站视频 | 哥布林洞窟动漫在线观看 | 国产福利第一页 | av网站在线免费看 | 好吊色在线| 国产精品大全 | 亚洲h视频在线观看 | 一二三四区在线 | 久久综合久久久 | 国产一区中文字幕 | 国产午夜三级一区二区三 | 亚洲欧美日韩精品久久亚洲区 | 色5月婷婷 | 成人av在线网址 | 国产精品女人久久久 | av2014天堂网 | 免费成人深夜夜视频 |