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 获取本机ip地址的两个方法
Feb 25 Python
使用python实现省市三级菜单效果
Jan 20 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
python 协程 gevent原理与用法分析
Nov 22 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
解决python运行启动报错问题
Jun 01 Python
python如何查看安装了的模块
Jun 23 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
Python实例教程之检索输出月份日历表
Dec 16 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之第十天
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
实例讲解Python3中abs()函数
2019/02/19 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
Django框架安装方法图文详解
2019/11/04 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
如何理解python中数字列表
2020/05/29 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
十一个高级MySql面试题
2014/10/06 面试题
先进班级集体事迹材料
2014/01/30 职场文书
解除劳动合同协议书
2014/04/14 职场文书
开网店计划分析
2019/07/30 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis