前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python枚举类

Python枚举类

作者头像
听着music睡
发布于 2018-11-23 10:06:37
发布于 2018-11-23 10:06:37
67500
代码可运行
举报
文章被收录于专栏:Android干货Android干货
运行总次数:0
代码可运行

Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较。

定义枚举类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from enum import Enum, unique

@unique
class Weekday(Enum):
    Sun = 0 # Sun的value被设定为0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6

可以看到括号里面是Enum ,即继承自枚举类

然后给这个枚举类的每个成员赋予一个值

@unique装饰器可以帮助我们检查保证没有重复值。

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> day1 = Weekday.Mon
>>> print(day1)
Weekday.Mon
>>> print(Weekday.Tue)
Weekday.Tue
>>> print(Weekday['Tue'])
Weekday.Tue
>>> print(Weekday.Tue.value)
2
>>> print(day1 == Weekday.Mon)
True
>>> print(day1 == Weekday.Tue)
False
>>> print(Weekday(1))
Weekday.Mon
>>> print(day1 == Weekday(1))
True
>>> Weekday(7)
Traceback (most recent call last):
  ...
ValueError: 7 is not a valid Weekday
>>> for name, member in Weekday.__members__.items():
...     print(name, '=>', member)
...
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fri => Weekday.Fri
Sat => Weekday.Sat
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于PEP435的Enum和namedtuple及枚举实现
关于python在3.4中出现一个新的枚举的类 Enum ,刚出来时也看了下PEP-435的描述,没有太过于注意。今天群里大家简要的讨论了下枚举这个东西。wrongway兄也抛出了自己的看法,同时也让我(们)知道了有namedtuple这样一个东西的存在。然后我又仔细看了下PEP-435内容。
the5fire
2019/02/28
6770
J2SE 枚举类型 [enum]
/**  * @author Hongten  *  * @time 2011-8-10 2011  */ public enum Week {  MON, TUE, WED, THU, FRI, SAT, SUN }
Hongten
2018/09/13
3020
Java 枚举类详解
这样一来,1-7的星期数就可以用WeekConstant.MON这样的方式来表达了,好看了不少,但是仍然存在一定的缺陷。
花落花相惜
2021/12/15
9900
Python中使用枚举类
更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:
致Great
2019/02/13
7810
Python 枚举
首先,定义枚举要导入enum模块。 枚举定义用class关键字,继承Enum类。 用于定义枚举的class和定义类的class是有区别。
周小董
2019/03/25
6360
python 面向对象技巧 枚举类
更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:
葫芦
2019/04/17
6660
枚举类
当需要定义常量时,一个办法是用大写变量通过整数来定义 好处是简单,缺点是类型是int,并且仍然是变量 Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较,这样这些相关常量就不会变化了
py3study
2020/01/15
4430
【Python】Python3.X笔记
继承: 可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只要新增自己特有的方法,也能够把 父类不适合的方法覆盖重写。
前端修罗场
2023/10/07
2470
Python day7 面向对象高级编程 (2)
想要限制实例的属性,例如只允许对Student实例添加name和age属性:Python允许在定义class的时候,定义一个特殊的slots变量,来限制该class实例能添加的属性
昆兰
2024/08/01
1450
Python 基础(十五):枚举
起初 Python 中并未内置枚举(enum)类型,枚举是在 Python3.4 添加的新功能,此时我们可能会有一个疑问:Python3.4 之前的版本还能不能使用枚举呢?
Python小二
2020/08/18
5900
Python 基础(十五):枚举
Python学习笔记(七)·面向对象高级编程
数据封装、继承和多态只是面向对象程序设计中最基础的 3 个概念。在 Python 中,面向对象还有很多高级特性,允许我们写出非常强大的功能。
公爵
2022/09/28
5630
Python学习笔记(七)·面向对象高级编程
Python3 的面向对象
# 面向对象 import abc from enum import Enum, unique @unique # unique确保无重复值 class Weekday(Enum): """ 枚举类 """ # 左边为name,右边为value Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat = 6 class Person(metaclass=abc
用户2337871
2020/10/26
3550
Python(六)
数据封装、继承和多态只是面向对象程序设计中最基础的 3 个概念。在 Python 中,面向对象还有很多高级特性,允许我们写出非常强大的功能。本篇,我们会说说多重继承、定制类等概念。
1ess
2021/11/01
5500
Java核心-核心类与API(3)
话接上回,继续核心类与API的学习,这次介绍一下枚举类以及与系统、交互有关的类,需要了解并能使用即可。
reload
2024/02/26
2010
Java核心-核心类与API(3)
深入理解Enum(枚举类)
你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯难了。
说故事的五公子
2021/01/27
6580
深入理解Enum(枚举类)
python简明笔记
通过 for 语句我们可以使用 for 循环。Python 里的 for 循环与 C 语言中的不同。这里的 for 循环遍历任何序列(比如列表和字符串)中的每一个元素。下面给出示例:
拾点阳光
2018/05/03
2.3K0
python简明笔记
10-面向对象2
isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上 。
用户3106371
2019/03/11
1.6K0
python 【枚举】
枚举,枚举可以看成“一组常量的集合”,就是向一个类中添加若干个变量。 from enum import Enum class Week(Enum): #Week类继承Enum类 Mon = 1 Tue = 2 Wed = 3 Thu = 4 Fri = 5 Sat =6 San =7 day1=Week.Mon ---- 枚举取值 (1)类名 . 成员名   Week . Mon (2)类名 . 成员名 . na
py3study
2020/01/17
8010
【C语言笔记】枚举
这个知识点很重要,到处能用得到。其可以与typedef来进行类比进行理解(可查看【C语言笔记】define与typedef的区别?)。除此之外,其还可以与枚举enum进行类比。
正念君
2019/06/26
9720
【C语言笔记】枚举
Java枚举类与常用方法
这个方法的话,values()方法如果不在后面使用[索引下标],那么他将会输出一串地址,而不是值,后面的[ ]里面加上下标就可以输出对应值了。
JanYork_简昀
2022/04/11
5040
Java枚举类与常用方法
相关推荐
关于PEP435的Enum和namedtuple及枚举实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验