鱼C论坛

 找回密码
 立即注册
查看: 2951|回复: 1

python没有枚举 有没有好的解决方案

[复制链接]
发表于 2015-1-12 15:03:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
因为之前是用java写的项目,现在要用python快速开发,所以2个项目同时要并行。之前java的枚举也需要用到,有没有好的解决方案啊。

麻烦讲的简单点 初学者。。。

python版本 2.7.6
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-12 19:49:38 | 显示全部楼层
本帖最后由 小甲鱼的二师兄 于 2015-1-12 19:52 编辑

方法1. 使用自定义类
  1. class Numbers(object):
  2.     ONE = 1
  3.     TWO = 2
  4.     THREE = 3
  5.   
  6. assert Numbers.ONE == 1
  7. assert Numbers.TWO == 2
  8. assert Numbers.THREE == 3
复制代码


方法2:使用函数动态创建类
  1. def enum(**enums):
  2.     return type('Enum', (object,), enums)
  3.   
  4. Numbers = enum(ONE=1, TWO=2, THREE=3)
  5.   
  6. assert Numbers.ONE == 1
  7. assert Numbers.TWO == 2
  8. assert Numbers.THREE == 3
复制代码


方法3:创建一个从python的集合扩展来的对象
  1. view sourceprint?
  2. class Enum(set):
  3.     def __getattr__(self, name):
  4.         if name in self:
  5.             return name
  6.         raise AttributeError
  7.   
  8. Numbers = Enum( "ONE TWO THREE".split() )
  9.   
  10. error = False
  11. try:
  12.     print Numbers.ONE
  13.     print Numbers.TWO
  14.     print Numbers.THREE
  15. except:
  16.     error = True
  17. assert error == False
  18.   
  19. try:
  20.     print Numbers.FOUR
  21. except:
  22.     error = True
  23. assert error == True
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-14 10:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表