状态机 python_Python状态机设计
我真的不明白这个问题。设计模式非常清晰。请参阅Design Patterns book。class SuperState( object ):
def someStatefulMethod( self ):
raise NotImplementedError()
def transitionRule( self, input ):
raise NotImplementedError()
class SomeState( SuperState ):
def someStatefulMethod( self ):
actually do something()
def transitionRule( self, input ):
return NextState()
这是非常普通的样板,用于爪哇、C++、Python(我也肯定其他语言)。
如果您的状态转换规则碰巧是微不足道的,那么有一些优化可以将转换规则本身推送到超类中。
注意,我们需要有前向引用,所以我们按名称引用类,并使用eval将类名转换为实际的类。另一种方法是生成转换规则实例变量而不是类变量,然后在定义所有类之后创建实例。class State( object ):
def transitionRule( self, input ):
return eval(self.map[input])()
class S1( State ):
map = { "input": "S2", "other": "S3" }
pass # Overrides to state-specific methods
class S2( State ):
map = { "foo": "S1", "bar": "S2" }
class S3( State ):
map = { "quux": "S1" }
在某些情况下,您的事件不像测试对象的相等性那么简单,因此更一般的转换规则是使用正确的函数-对象对列表。class State( object ):
def transitionRule( self, input ):
next_states = [ s for f,s in self.map if f(input) ]
assert len(next_states) >= 1, "faulty transition rule"
return eval(next_states[0])()
class S1( State ):
map = [ (lambda x: x == "input", "S2"), (lambda x: x == "other", "S3" ) ]
class S2( State ):
map = [ (lambda x: "bar" <= x <= "foo", "S3"), (lambda x: True, "S1") ]
由于规则是按顺序计算的,因此允许使用“默认”规则。
状态机 python_Python状态机设计相关推荐
- Verilog实现状态机与状态机经典示例——序列检测器、自动饮料售卖机
原文链接:https://blog.csdn.net/qq_34070723/article/details/100737225 作者:King阿金 目录 1.状态机原理与三段式状态机 2.状态机示例 ...
- 数字IC笔面基础,师傅领进门,修行靠个人——人人心中都有一个状态机(状态机简介及Verilog模板)
师傅领进门,修行靠个人(状态机) 写在前面的话 状态机简介 状态机类型 一段.两端还是三段? 状态机的Coding Style要求: 几点规则: 什么是一段.两段.三段? 一段.两段.三段优缺点 Ve ...
- 【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用
实验现象: 按键每按下一次,三色LED改变一次状态. 核心代码: //--------------------module_rst_n---------------------------// mod ...
- Python什么是状态机,状态机的简单应用
状态机是由两种或多种状态组成的,每一个状态有着对应的功能.状态机使用会让我们的代码简洁,逻辑清晰,条件判断难以实现的问题我们就可以实现,例如我们像完成这样的效果. 我们通过每次画不同的字符串来做出这样 ...
- MBSE建模学习之六:状态机和状态机图
学习和应用基于模型的系统工程(MBSE)技术,离不开软件工具的支持.可在www.zhiruisiwei.com网站服务页面下载中文版.国产化的MBSE建模软件工具:智睿思维基于模型的系统工程软件(MB ...
- 算法设计与分析python_Python算法设计与分析
内容提要 本书内容包括算法初步.排序算法.查找.双指针问题.哈希算法.深度优先搜索算法.广度优先搜索算法.回溯算法.动态规划.贪心算法.分治算法.并查集.最短路径算法和数论算法等常见算法.每个算法都做 ...
- python 状态机_Python 状态机
class StateMachine: def __init__(self): self.handlers = {} # 状态转移函数字典 self.startState = None # 初始状态 ...
- FPGA之道(54)状态机的设计
文章目录 前言 状态机的设计 状态浅析 真正的状态 抽象的状态与中间变量 抽象状态的设计方法 抽象状态与中间变量的权衡 基本状态介绍 初始态 结束态 中继态 分支态 复位态 空闲态 多余态 状态的一些 ...
- 状态机设计的一般步骤_浅谈状态机
来源:公众号[ZYNQ]ID :FreeZynq 整理 :李肖遥 本文目录 前言 状态机简介 状态机分类 Mealy 型状态机 Moore 型状态机 状态机描述 一段式状态机 二段式状态机 三段式 ...
最新文章
- jquery each
- 一行预处理代码,让你的CV模型更强!Google出品
- java 内部类深度剖析
- ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(.. 以及oracle中使用chr
- sqlserver 事务例子
- gulp 和npm_为什么我离开Gulp和Grunt去看npm脚本
- Jmeter分布式测试过程中遇到的问题及摘抄前辈问题汇总
- 《MFC初探》之变量类型
- 测试学开发——第一课:环境搭建与页面开发介绍。
- mysql a锁_MYSQL中的锁
- .net5 和 .net6 部署到 IIS 完整步骤
- 高等数学(第七版)同济大学 习题7-5 个人解答
- 比较指令-汇编码分析
- 计算机《画图》教案学生状态,《初识“画图”》教案设计.doc
- python小论文范文3000字_论文范文3000字
- python调用百度AI识别文字和表格
- ImageJ对荧光信号离散的细胞计数方法
- 南京市shp矢量数据wgs84坐标系包含区划路网水系poi功能区等类型
- Yolov5(1):Detect源码逐行解析
- “谷底”类题目及一些自己的思考
热门文章
- 小区物业费信息管理系统设计c++_没有入住需要交物业费吗?有没有办法不交物业费呢?法律专家解读...
- 基于tensorflow2.0实现猫狗大战(搭建网络迁移学习)
- ROS2学习(十三).ROS概念 - ROS结构(Composition)
- mysql中存储日期的类型_选择合适的 MySQL 日期时间类型来存储你的时间
- java系统系统异常处理,银行系统(Java)异常处理
- PAT_B_1073_C++(20分)
- *PAT_B_1014_Java(20分)
- centos 查找nginx_centos7肿么查看已经安装nginx
- Codeforce1311B. WeirdSort (冒泡排序)
- 数学--数论--HDU - 6322 打表找规律