Ketahui tentang mesin keadaan dalam Python dan cara melaksanakannya

王林
Lepaskan: 2024-01-22 12:45:11
ke hadapan
1109 orang telah melayarinya

Ketahui tentang mesin keadaan dalam Python dan cara melaksanakannya

Mesin keadaan ialah model tingkah laku yang mentakrifkan cara objek bertindak balas kepada peristiwa. Dalam Python, mesin keadaan biasanya dilaksanakan sebagai mesin keadaan terhingga (FSM). FSM ialah model pengiraan matematik yang boleh digunakan untuk mereka bentuk litar logik digital dan program komputer. Ia terdiri daripada satu set keadaan, peralihan antara keadaan, dan operasi yang dilakukan apabila peralihan berlaku.

Mesin keadaan terhingga (FSM) boleh diwakili sebagai graf terarah, dengan keadaan diwakili sebagai nod dan peralihan diwakili sebagai tepi. Tepi dilabelkan dengan peristiwa yang mencetuskan peralihan dan tindakan dikaitkan dengan tepi.

Sifat Dinamik Mesin Negeri

Apabila kita mencipta mesin keadaan, modul mencipta set sifat khas untuk setiap keadaan yang wujud dalam mesin. Kami boleh menggunakan kejadian dan sifat untuk menyemak sama ada harta itu berkenaan dengan keadaan.

Menulis mesin keadaan terhingga am dalam Python

class StateMachine:
def __init__(self):
self.handlers={}
self.startState=None
self.endStates=[]
def add_state(self,name,handler,end_state=0):
name=name.upper()
self.handlers[name]=handler
if end_state:
self.endStates.append(name)
def set_start(self,name):
self.startState=name.upper()
def run(self,cargo):
try:
handler=self.handlers[self.startState]
except:
raise InitializationError("must call.set_start()before.run()")
if not self.endStates:
raise InitializationError("at least one state must be an end_state")
while True:
(newState,cargo)=handler(cargo)
if newState.upper()in self.endStates:
print("reached",newState)
break
else:
handler=self.handlers[newState.upper()]
Salin selepas log masuk

Atas ialah kandungan terperinci Ketahui tentang mesin keadaan dalam Python dan cara melaksanakannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:163.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan