python模拟enum枚举类型的方法小结


Posted in Python onApril 30, 2015

本文实例总结了python模拟enum枚举类型的方法。分享给大家供大家参考。具体分析如下:

python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型

方法1. 使用自定义类

class Numbers(object):
  ONE = 1
  TWO = 2
  THREE = 3
assert Numbers.ONE == 1
assert Numbers.TWO == 2
assert Numbers.THREE == 3

方法2:使用函数动态创建类

def enum(**enums):
  return type('Enum', (object,), enums)
Numbers = enum(ONE=1, TWO=2, THREE=3)
assert Numbers.ONE == 1
assert Numbers.TWO == 2
assert Numbers.THREE == 3

方法3:创建一个从python的集合扩展来的对象

class Enum(set):
  def __getattr__(self, name):
    if name in self:
      return name
    raise AttributeError
Numbers = Enum( "ONE TWO THREE".split() )
error = False
try:
  print Numbers.ONE
  print Numbers.TWO
  print Numbers.THREE
except:
  error = True
assert error == False
try:
  print Numbers.FOUR
except:
  error = True
assert error == True

希望本文所述对大家的python程序设计有所帮助。

Python 相关文章推荐
Python网络爬虫实例讲解
Apr 28 Python
Python实现的简单排列组合算法示例
Jul 04 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
python实现弹跳小球
May 13 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
pandas.cut具体使用总结
Jun 24 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
django实现后台显示媒体文件
Apr 07 Python
python drf各类组件的用法和作用
Jan 12 Python
Python操作Excel的学习笔记
Feb 18 Python
python 第三方库paramiko的常用方式
Feb 20 Python
详解OpenCV曝光融合
Apr 29 Python
python中随机函数random用法实例
Apr 30 #Python
python使用mailbox打印电子邮件的方法
Apr 30 #Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 #Python
python同时给两个收件人发送邮件的方法
Apr 30 #Python
python通过邮件服务器端口发送邮件的方法
Apr 30 #Python
在Python的web框架中中编写日志列表的教程
Apr 30 #Python
python登录pop3邮件服务器接收邮件的方法
Apr 30 #Python
You might like
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
Why do we need Unit test
2013/01/03 面试题
通用自荐信范文
2014/03/14 职场文书
工程部主管岗位职责
2015/02/12 职场文书
小学运动会通讯稿
2015/07/18 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL
nginx静态资源的服务器配置方法
2022/07/07 Servers