transitions-一种轻量级的,面向对象的有限状态机实现

简介: transitions是Python中的轻量级、面向对象的状态机实现,具有许多扩展。与Python 2.7+和3.0+兼容。任何好的状态机(毫无疑问,还有很多坏的状态机)的灵魂都是一组状态。我们通过将字符串列表传递给Machine初始化程序来定义有效的模型状态。但是在内部,状态实际上表示为State对象。

transitions是Python中的轻量级、面向对象的状态机实现,具有许多扩展。与Python 2.7+和3.0+兼容。

任何好的状态机(毫无疑问,还有很多坏的状态机)的灵魂都是一组状态。我们通过将字符串列表传递给Machine初始化程序来定义有效的模型状态。但是在内部,状态实际上表示为State对象。

状态

您可以通过多种方式初始化和修改状态。具体来说,您可以:

  • 将字符串传递给Machine初始化器,并给出状态的名称
  • 直接初始化每个新State对象
  • 通过带有初始化参数的字典

将状态添加到计算机后,将对其进行一次初始化,并且状态将一直持续到将其从计算机中删除为止。换句话说:如果您更改状态对象的属性,则下次您进入该状态时,将不会重置此更改。

实现

让我们实现以下状态机。

  • 对象的开头为“开发中”,然后可以变为“实时”。
  • 从“活动”状态可以将其标记为“维护中”。
  • 从所有状态可以将该对象标记为“已删除”。
  • 可以将“已删除”对象恢复为“正在维护”状态。
  • 每当发生过渡时,日期时间都会记录在日期字段中。

71257933_202012062240540175465247.jpg

安装

transitions-一种轻量级的,面向对象的有限状态机实现的源代码文件

示例

一个好的例子值得使用100页的API文档,一百万条指令或一千个单词。

无论如何,github上面有最为详细的示例。当然,您还可以在jupyter上面亲自运行这些例子。

71257933_202012062245490675588840.jpg

相关文章
|
分布式计算 前端开发 JavaScript
程范式解析:面向对象、函数式与声明式编程
程范式解析:面向对象、函数式与声明式编程
154 0
|
7月前
面向对象与面向过程的区别
面向对象与面向过程的区别
87 0
你真的知道面向对象与面向过程的区别吗?
你真的知道面向对象与面向过程的区别吗?
126 0
|
Linux C语言 C++
面向对象与面向过程最本质的区别
面向对象与面向过程最本质的区别
89 0
C++面向对象的概念和特点
C++面向对象的概念和特点
面向对象概念
1. Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信 2. 如果一个软件系统使用这样4个概念设计和实现,则我们认为这个软件系统是面向对象的 什么是对象(object)
105 0
面向过程和面向对象区别
面向过程和面向对象区别
137 0
面向过程与面向对象的区别与联系
面向过程与面向对象的区别与联系
138 0
|
设计模式
大话设计模式-面向对象(1)
大话设计模式-面向对象(1)