所有基础文章修改完毕
This commit is contained in:
75
Article/PythonBasis/python11/4.md
Normal file
75
Article/PythonBasis/python11/4.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# 四、枚举的比较 #
|
||||
|
||||
因为枚举成员不是有序的,所以它们只支持通过标识(identity) 和相等性 (equality) 进行比较。下面来看看 `==` 和 `is` 的使用:
|
||||
|
||||
```python
|
||||
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: UTF-8 -*-
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class User(Enum):
|
||||
Twowater = 98
|
||||
Liangdianshui = 30
|
||||
Tom = 12
|
||||
|
||||
|
||||
Twowater = User.Twowater
|
||||
Liangdianshui = User.Liangdianshui
|
||||
|
||||
print(Twowater == Liangdianshui, Twowater == User.Twowater)
|
||||
print(Twowater is Liangdianshui, Twowater is User.Twowater)
|
||||
|
||||
try:
|
||||
print('\n'.join(' ' + s.name for s in sorted(User)))
|
||||
except TypeError as err:
|
||||
print(' Error : {}'.format(err))
|
||||
|
||||
```
|
||||
|
||||
输出的结果:
|
||||
|
||||
```txt
|
||||
|
||||
False True
|
||||
False True
|
||||
Error : '<' not supported between instances of 'User' and 'User'
|
||||
|
||||
```
|
||||
|
||||
可以看看最后的输出结果,报了个异常,那是因为大于和小于比较运算符引发 TypeError 异常。也就是 `Enum` 类的枚举是不支持大小运算符的比较的。
|
||||
|
||||
那么能不能让枚举类进行大小的比较呢?
|
||||
|
||||
当然是可以的,使用 IntEnum 类进行枚举,就支持比较功能。
|
||||
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: UTF-8 -*-
|
||||
import enum
|
||||
|
||||
|
||||
class User(enum.IntEnum):
|
||||
Twowater = 98
|
||||
Liangdianshui = 30
|
||||
Tom = 12
|
||||
|
||||
|
||||
try:
|
||||
print('\n'.join(s.name for s in sorted(User)))
|
||||
except TypeError as err:
|
||||
print(' Error : {}'.format(err))
|
||||
|
||||
|
||||
```
|
||||
|
||||
看看输出的结果:
|
||||
|
||||
```txt
|
||||
Tom
|
||||
Liangdianshui
|
||||
Twowater
|
||||
```
|
||||
|
||||
通过输出的结果可以看到,枚举类的成员通过其值得大小进行了排序。也就是说可以进行大小的比较。
|
||||
Reference in New Issue
Block a user