python的枚举函数 python枚举法例子( 四 )


此功能用于我们在使用枚举时,只在意枚举的标识符的含义而不在意值的情况下,但是如果需要与字符串或整数混合使用就要额外注意 。下面贴上官方的示例:
可以发现 , 使用auto()得到的是整数自增型,如果我们需要别的方式,只需要在我们的枚举类中 , 重写_generate_next_value_方法 。
枚举对象可以进行比较,但是不能进行值比较,如果需要进行值比较则需要枚举对象继承IntEnum对象,举个例子:
上 面的测试例子当中 , 我们创建了两个继承类型不一样的枚举类 , 可以看到继承了IntEnum的Season可以进行值的比较 , 而继承了Enum的Part则不能进行值比较,并且IntEnum类型与Enum类型也不能进行比较,即使属性和值一样 。
枚举中可以定义枚举类自身特有的方法,也可以复写一些已经在基类中定义好的方法,比如:__init__,__str__,__repr__,__hash__,__format__等 。举个例子:
上面我们定义了一个枚举类,其中value是一个枚举类型,我们可以定义__init__方法去对应元组中的值,我们也复写了__str__方法 。
打印方法看看效果:
从输出结果看 , 我们自定义和复写的方法都已经成功的应用到了Mood类中 。
不同于java中的枚举类,python中的枚举类是可以被继承的,但是被继承的枚举类规定其不能定义任何成员 , 但可以定义抽象方法 。举例如下:
测试用例可以完美运行 , 我们可以发现:第一个方法中,抛出了TypeError的异常;第二个测试方法中,MoreColor继承了Color,Color继承了Shade, 并且我们可以通过子类调用父类中的方法 。
主要介绍了enum模块的基础知识,包含枚举的创建、枚举成员和属性的访问、枚举方法的创建、枚举的继承等 。其中新版中的_ignore_、_order_、_missing_等可以学习的例子,另外enum的子类IntEnum、IntFlag等也是我们比较常用的枚举基类 , 本文中简单的介绍了IntEnum, 而IntFlag相比与IntEnum多了, |, ^, ~的操作,其他的子类大家感兴趣也可以了解 。
python 8个常用内置函数解说8个超好用内置函数set(),eval(),sorted(),reversed(),map(),reduce() , filter(),enumerate()
python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率 。
这次来梳理下8个好用的python内置函数
1、set()
当需要对一个列表进行去重操作的时候,set()函数就派上用场了 。
用于创建一个集合,集合里的元素是无序且不重复的 。集合对象创建后,还能使用并集、交集、差集功能 。
2、eval()之前有人问如何用python写一个四则运算器,输入字符串公式,直接产生结果 。用eval()来做就很简单:eval(str_expression)作用是将字符串转换成表达式,并且执行 。
3、sorted()在处理数据过程中,我们经常会用到排序操作,比如将列表、字典、元组里面的元素正/倒排序 。这时候就需要用到sorted() ,它可以对任何可迭代对象进行排序 , 并返回列表 。对列表升序操作:
对元组倒序操作:
使用参数:key,根据自定义规则 , 按字符串长度来排序:
根据自定义规则,对元组构成的列表进行排序:
4、reversed()如果需要对序列的元素进行反转操作 , reversed()函数能帮到你 。reversed()接受一个序列,将序列里的元素反转,并最终返回迭代器 。
5、map()做文本处理的时候,假如要对序列里的每个单词进行大写转化操作 。这个时候就可以使用map()函数 。
map()会根据提供的函数,对指定的序列做映射,最终返回迭代器 。也就是说map()函数会把序列里的每一个元素用指定的方法加工一遍 , 最终返回给你加工好的序列 。举个例子,对列表里的每个数字作平方处理:

推荐阅读