python--enum
# enum用于枚举,该模块下有一个Enum,我们定义的类要继承它 # 一旦继承,那么我们定义的key(仮),不能有重复值。 # 如果要保证value(仮)不重复,那就引入unique,给我们定义的类加上这个装饰器 from enum import Enum, unique @unique class Color(Enum): red = 1 green = 2 blue = 3 yellow = 4 pink = 5 cyan = 6 # 通过名称获取成员,两种方式 print(Color["red"]) # Color.red print(Color.red) # Color.red # 通过值来获取成员 print(Color(2)) # Color.green # 获取成员的名称和值 print(Color.red.name) # red print(Color.red.value) # 1 # 也可以通过迭代获取成员 for color in Color: print(color.name, color.value) ''' red 1 green 2 blue 3 yellow 4 pink 5 cyan 6 '''
# 如果不加上unique,也就允许值相同会有什么情况 from enum import Enum class Girls(Enum): satori = 1 mashiro = 2 nagisa = 3 tomoyo = 4 kurisu = 5 sola = 1 # satori 和sola的值都是1 print(Girls(1)) # Girls.satori,会发现只打印了satori,也就是第一个。如果值相同,那么后者相当于是前者的别名。 # 遍历的话,会发现sola同样没有被打印出来 for girl in Girls: print(girl) ''' Girls.satori Girls.satori Girls.mashiro Girls.nagisa Girls.tomoyo Girls.kurisu ''' # 如果想获取所有的成员,哪怕值相同,该怎么做呢? # 枚举属性内部有一个__members__属性,相当于一个字典 for girl in Girls.__members__.items(): print(girl) ''' ('satori', <Girls.satori: 1>) ('mashiro', <Girls.mashiro: 2>) ('nagisa', <Girls.nagisa: 3>) ('tomoyo', <Girls.tomoyo: 4>) ('kurisu', <Girls.kurisu: 5>) ('sola', <Girls.satori: 1>) ''' # 会发现以一种更详细的方式打印了出来 # 并且每个元组的第二个元素是<enum 'Girls'>类型 # 不要被<>给忽悠了,其实就是我们用Girls.satori,Girls.mashiro ····获取得到的结果 for girl in Girls.__members__.items(): print(girl[1].name, girl[1].value) ''' satori 1 mashiro 2 nagisa 3 tomoyo 4 kurisu 5 satori 1 ''' # 成员之间也可以进行比较,但只能用==,is等操作符,不支持大小比较 print(Girls.satori is Girls.mashiro) # False print(Girls.satori == Girls.mashiro) # False print(Girls.satori is Girls.sola) # True,因为两者值一样,后者是前者的别名,两个指针指向了同一个地方 print(Girls.satori is Girls.sola) # True # 如果把1换成列表的话 class Girls(Enum): satori = [1, 2] mashiro = 2 nagisa = 3 tomoyo = 4 kurisu = 5 sola = [1, 2] kurumi = [1, 2] print(Girls.satori is Girls.sola) # True print(Girls.satori is Girls.sola) # True print(Girls.kurumi is Girls.sola) # True # 会发现仍旧是True,尽管列表是可变类型,但如果值一样,会继续让sola的指针指向satori的指针所指向的内存 # 因为值一样,那么sola就看做是satori的引用 # 同理再加上一个kurumi是一样的结果 # 不用__members__的话,打印的仍然是第一个satori
python--enum的更多相关文章
- Python Enum 枚举 用法汇总
Python Enum 枚举 用法汇总 import os import sys if sys.version_info.major + sys.version_info.minor * 0.1 &l ...
- Python enum 枚举 判断 key(键) 或者 value(值)是否在枚举中
Python enum 枚举 判断 key(键) 或者 value(值)是否在枚举中 python 的基本用法请浏览:https://www.cnblogs.com/ibingshan/p/98564 ...
- python enum 枚举
http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html python 3.4+ from enum import Enu ...
- 【python】Python: Enum枚举的实现
从C#系语言过来用Python,好不容易适应了写代码不打花括号,突然有一天发现它居然木有枚举……于是stackoverflow了一把,发现神人的枚举(enum)实现到处都是,于是汉化总结过来. 如果是 ...
- 【转载】Python: Enum枚举的实现
转自:http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html 从C系语言过来用Python,好不容易适应了写代码不打 ...
- protobuf, python Enum
继承enum.Enum的python class,其实是一个, name-value的关系,可以直接className(value)得到一个类.比如 import enum class xx(enum ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- Python 的枚举 Enum
枚举是常用的功能,看看Python的枚举. from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May' ...
- python 枚举Enum
常量是任何一门语言中都会使用的一种变量类型 如 要表示星期常量,我们可能会直接定义一组变量 JAN = 1 TWO = 2 ... 然后在返回给前端的时候,我们返回的就会是1,2,...这种魔法数字, ...
- Python 枚举 enum
Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...
随机推荐
- Weblogic Linux jar包安装
环境/工具: 系统:CentOS 7 JDK:Oracle JDK fmw_12.2.1.2.0_wls.jar 0x01.新建普通用户weblogic 在Linux环境下建议使用普通用户安装,web ...
- 7,MongoDB 之 Limit 选取 Skip 跳过 Sort 排序
我们已经学过MongoDB的 find() 查询功能了,在关系型数据库中的选取(limit),排序(sort) MongoDB中同样有,而且使用起来更是简单 首先我们看下添加几条Document进来 ...
- CodeForces 873F Forbidden Indices 后缀数组
忘了当时怎么做的了,先把代码贴上,保存一下后缀数组模板. #include <cstdio> #include <cstring> #include <algorithm ...
- Kafka消费分组和分区分配策略
Kafka消费分组,消息消费原理 同一个消费组里的消费者不能消费同一个分区,不同消费组的消费组可以消费同一个分区 Kafka分区分配策略 在 Kafka 内部存在两种默认的分区分配策略:Range 和 ...
- 剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)
剑指Offer - 九度1356 - 孩子们的游戏(圆圈中最后剩下的数)2014-02-05 19:37 题目描述: 每年六一儿童节,JOBDU都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.H ...
- 《Cracking the Coding Interview》——第17章:普通题——题目2
2014-04-28 22:05 题目:写个程序判断三连棋哪一方赢了. 解法:三个相同的棋子连成一条横线,竖线或者对角线就判断为赢了. 代码: // 17.2 Write an algorithm t ...
- IIS相关服务和无法启动服务W3SVC错误提示
首先,打开“服务”查看下面的服务是否启动.(下面的两个服务就是跟IIS相关的服务,计算机(右键)->管理->服务和应用程序->服务) Windows Process Activati ...
- 1.0 python-client以及ui自动化介绍
appium的client-----捕获元素和对元素进行操作都是在client里面去写脚本实现的,client会将你写的python脚本发送到appium server上,然后appium serv ...
- 百度webuploader上传 1
百度webupload网址:http://fex.baidu.com/webuploader/ 引入js和css <script src="../../Content/webuploa ...
- Python全栈工程师(运算符、if)
ParisGabriel Python 入门基础 比较运算符:< 小于<= 小于等于> 大于>= 大于等于== 等于!= 不等于 语法: 表达式1>表达式 ...