python状态机实现_如何实现Python状态机设计?
我不太明白这个问题,State设计模式非常清楚。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()
这是非常常见的样板,用于Java、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状态机设计?相关推荐
- python len函数_知识清单Python必备的69个函数,你掌握了吗?
本文纲要 Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间.目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很 ...
- python优化网站_[练习] 用PYTHON来优化网站中的图片
我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困. 对于网站中的一些关键的页面,多重缓存.静态化.程序代码优化--之外,为了提高用户打开页面的速度,图片是必须要优化的. ...
- python递归函数例题_递归案例python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...
- 网易图灵学院python公开课_图灵学院 Python全系列教程全栈工程师 python视频教程下载...
大家怎么说? 老师很好,我认为,若想学好python,应该多练.多想.多看.学习资料不能仅限于老师给定的这些内容,这些毕竟是入门资料 老师讲的真不错,对于我们这种小白来说 也比较容易懂,虽然有些时候自 ...
- python列表拆包_详解python 拆包可迭代数据如tuple, list
详解python 拆包可迭代数据如tuple, list 拆包是指将一个结构中的数据拆分为多个单独变量中. 以元组为例: >>> a = ('windows', 10, 25.1, ...
- load python txt文件_详解Python中numpy.loadtxt()读取txt文件
为了方便使用和记忆,有时候我们会把 numpy.loadtxt() 缩写成np.loadtxt() ,本篇文章主要讲解用它来读取txt文件. 读取txt文件我们通常使用 numpy 中的 loadtx ...
- 文科生自学python要多久_怎么自学python,大概要多久?
都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...
- python是什么编程教程-编程python是什么_谁的Python教程最好?
谁的Python教程最好? 建议你可以看看这里的<Python基础教程>和<Python学习手册>应该适合你的. 希望对你有用. 记得采纳呀~ Python中的9个代码小实例! ...
- python什么环境_什么是Python?(基础环境建设),NO2,搭建
1. Python语言 1.1 Python语言的基本概念 Python 是⼀种极少数能兼具 "简单" 与 "功能强⼤" 的编程语⾔.你将惊异于发现你正在使⽤的 ...
- python框架大全_常用的Python开源框架有哪些?列举这3个
随着人工智能快速发展,不仅在各个领域应用日益广泛,同时也引发了教学内容的变革和创新.人工智能的火热得益于成功的开源以及深度学习框架的不断涌现.而Python作为一种脚本语言,具有易学.易维护等优点,它 ...
最新文章
- UNITY3D拓展编辑器 - 目录
- Vodafone A/B测试实践
- (转)Mac下MySql安装经历(含安装错误排查、卸载多种折腾)
- 【机器视觉】 serialize_measure算子
- 联想笔记本那些有手写功能_联想高端翻转本YOGA C940开启促销 配一体式转轴音响还可私人订制...
- ebook site
- php数据多层关联,php – 我们如何进行laravel多级关联
- 网络断网远程计算机会自动修复么,网络断网不怕,教你自己动手修复
- ngx_lua arg类型_使用模式,Arg和类型微调Drupal主题
- [算法课]算法课全题目解答及各周链接
- java openssl rsa_Java中使用OpenSSL生成的RSA公私钥进行数据加解密
- ESXI上检测磁盘状态
- 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化
- 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
- 这朵玫瑰叫Jenny
- ARM base instruction -- cmn
- 深入理解面向对象,面向对象3个特性7个原则6种关系
- css 小于10像素字体
- 【大医精诚】认识白细胞
- 你见过最赞或最搞笑字幕组翻译有哪些?