目录
枚举Enum
开发的时候遇到一些状态,flag等一些东西可以定义枚举类来表示。
学过java都知道如何创建枚举类 Enum, 给定构造函数,然后在内部写枚举对象以及枚举对象的属性
那么python也是一样的。而且python提供了创建枚对象的构造函数了可以满足一些简单的创建
创建枚举
1.直接使用 enum模块中的Enum构造函数 来创建枚举对象
2.通过继承Enum类
通过构造函数创建枚举对象
下面通过 enums模块中的Enum类的构造函数创建一个枚举对象
每个枚举对象都有 name 和 value 两个属性
创建枚举对象的时候,需要制定 对象变量名称 , 以及枚举对象
下面代码中的 oper 就是枚举对象变量名称
其中的 + - * / 就是枚举对象
枚举对象的值默认从1 开始(我们没有指定的情况)
访问枚举对象中元素的方法
可以直接通过下面四种方式进行访问
1. 枚举对象.元素名 : 但是这个要求元素名称必须是合法的标识符满足变量名要求
2.枚举对象['元素名'] : 这个就是我们自由定义字符串即可
3.枚举对象(value) 也就是通过枚举值来进行访问的
枚举值是从1开始进行标记出来的
4.枚举对象会提供一个 __members__属性,返回一个字典用于记录枚举所有的枚举实例
因此可以循环这个字典访问
通过继承枚举类创建枚举对象
格式:
class MyEnum(enum.Enum):
#定义类变量
枚举类的构造器
枚举的构造器必须指定参数值
这种定义枚举的方法和Java是一样的
需要制定 枚举对象的属性,然后是构造函数需要提供这些属性的入参
然后就是直接 写出 需要的枚举对象即可。
注意定义好构造函数之后,写枚举对象的方式 ( Java中是 枚举对象(属性1,属性2,属性3... ) )
而python 中就是 枚举对象 = 属性1,属性2....
例如下面我们创建一个 状态的枚举类
这个类中我们将枚举对象的属性定义为 __code 和 __desc
这样可以对外界隐藏属性
然后我们使用 @property来定义一个供外部访问的合成属性
对于@property 这是函数装饰器,在java中是注解
后面会学习到函数装饰器的,这里只要形式上理解 它修饰一个函数,定义一个属性
枚举对象的访问方式和 Java 也是一样的
枚举类.枚举对象