python技巧31[python中使用enum][转]

以下几种方法来模拟enum:(感觉方法一简单实用)

# way1
class Directions:
    up = 0
    down = 1
    left = 2
    right =3
    
print Directions.down

# way2
dirUp, dirDown, dirLeft, dirRight = range(4)

print dirDown

# way3
import collections
dircoll=collections.namedtuple(‘directions‘, (‘UP‘, ‘DOWN‘, ‘LEFT‘, ‘RIGHT‘))
directions=dircoll(0,1,2,3)

print directions.DOWN

# way4
def enum(args, start=0):
    class Enum(object):
        __slots__ = args.split()

def __init__(self):
            for i, key in enumerate(Enum.__slots__, start):
                setattr(self, key, i)

return Enum()

e_dir = enum(‘up down left right‘)

print e_dir.down

# way5
# some times we need use enum value as string
Directions = {‘up‘:‘up‘,‘down‘:‘down‘,‘left‘:‘left‘, ‘right‘:‘right‘}

print Directions[‘down‘]

问题:有的时候需要使用enum的值作为字符串使用,像way5中表示的,大家有没有更好的办法?

参考:http://audbel.com/0/5009691

http://www.cnblogs.com/itech/archive/2011/03/08/1977245.html

时间: 2024-11-03 22:02:15

python技巧31[python中使用enum][转]的相关文章

python技巧31[移植python2.x到3.x]

我们都知道python从2.x升级到3.x的过程中有一些不兼容的改动,但是有时还我们不得不将2.x的程序升级到3.x. 主要不兼容如下图: 移植过程: 1) 确保存在的代码有足够的测试覆盖.从2.x到3.x的升级工作量并不是很大,但是包含了很多的微小的不兼容,必须通过测试来确保升级后的程序仍然保持原有的功能.完全的测试覆盖不是被建议的,但是确实是需要的. 2) 用python 2.6 的 -3 命令行选项来运行程序,从而发现和去除明显的不兼容问题. 3) 使用2to3转化工具来自动地将程序转化为

python基础31[python IDE之Eclipse+PyDev]

一 入门IDE作为python的初学者,在语法和类库学习阶段,我们可以使用以下简单使用的IDE:1) Python SDK 自带的IDEL(Python GUI)2) Komodo-Edit3) NotePad++ 二 终极IDE 之 Eclipse+PyDev1 特点1)开源免费2)代码完成和调试3)重构refactor,项目浏览explorer和类库browser4)目前最新版支持python2.1~3.0,仍不支持最新的3.1 2 下载 1)Java JDK(Eclipse运行需要)2)P

Python学习-31.Python中集合的一些操作

add方法: 1 s = {1,2,3} 2 s.add(4) 3 print(s)# {1, 2, 3, 4} 同list的append方法,若调用s.add(3),则不会有任何影响.这点与C#中的HashSet有区别. update方法: 1 s = {1,2,3,4,5} 2 s.update({3,5,7},[4,6]) 3 print(s)# {1, 2, 3, 4, 5, 6, 7} 同list的extend方法,将原来没有的元素添加进集合.update可以接受一个到多个可遍历的集合

python技巧 计算字符串中字母出现的次数并取出最大

有一个字符串 "aaddfdfdercfghfyttefsfsfewretr123trefg5624sdfcgvfdgte6435234532",现在需要取出里面出现次数最多的字符 第一种方法-装饰器 class get_max_count_string:    def __init__(self,func):        self.func=func        self.count={}    def __call__(self, args):        for s in

《Python CookBook2》 第四章 Python技巧 - 若列表中某元素存在则返回之 && 在无须共享引用的条件下创建列表的列表

若列表中某元素存在则返回之 任务: 你有一个列表L,还有一个索引号i,若i是有效索引时,返回L[i],若不是,则返回默认值v 解决方案: 列表支持双向索引,所以i可以为负数 >>> def list_get(L,i,v=None): if -len(L)<= i < len(L): return L[i] else: return v >>> list_get([1,2,3,4,5,6],3) 4 异常机制 >>> def list2_ge

会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span.dv { color: #40a070; } code > span.bn { color: #40a070; } code > span.fl { color: #40a070; } code >

Python IAQ中文版 - Python中少有人回答的问题

Python中少有人回答的问题 The Python IAQ: Infrequently Answered Questions 1 Q: 什么是"少有人回答的问题(Infrequently Answered Question)" ? 一个问题之所以很少有人回答,要么是因为很少有人知道问题的答案,要么是因为它涉及到一个晦涩而隐蔽的知识点(但可能是你关心的).我过去认为是我在Java IAQ中发明了这个词组,但是它也出现在了以数据丰富而著称的About.com Urban Legends网

Python补充02 Python小技巧

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程中经常使用的.之前很零碎的记在笔记本中,现在整理出来,和大家分享,也作为Python快速教程的一个补充. import模块 在Python经常使用import声明,以使用其他模块(也就是其它.py文件)中定义的对象. 1) 使用__name__ 当我们编写Python库模块的时候,我们往往运行一些测

python——深刻理解Python中的元类(metaclass)

译注:这是一篇在Stack overflow上 很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子 和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段 回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也