Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ketahui tentang mesin keadaan dalam Python dan cara melaksanakannya

Ketahui tentang mesin keadaan dalam Python dan cara melaksanakannya

王林
王林ke hadapan
2024-01-22 12:45:111063semak imbas

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()]

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!

Kenyataan:
Artikel ini dikembalikan pada:163.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam