首頁  >  文章  >  後端開發  >  python枚舉型別是什麼? python枚舉類型的簡單介紹

python枚舉型別是什麼? python枚舉類型的簡單介紹

不言
不言轉載
2018-10-10 16:07:502130瀏覽

本篇文章帶給大家的內容是關於python枚舉類型是什麼? python枚舉類型的簡單介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一:枚舉類型的定義
二:枚舉類別和普通類別的區別
1:值不可變
2:具有防止相同標籤得功能,不同標籤的值可以相同!

三:枚舉型別、枚舉值、枚舉名稱
1:VIP.YELLOW.Value    取得標籤的值
2:VIP.BLACK.name      取得標籤名稱
3 :枚舉裡面的部分為枚舉型別!

四:枚舉之間的比較
1: 支援等值比較與is, 不支援大小比較
2: 不同枚舉類別之間的比較

#五:枚舉的注意事項
   不同標籤的值相同的時候,第二種會被當作一種別名,呼叫時會被覆寫!
   遍歷的時候不會被印出來,解決方法是:

for v in VIP.__members__.items():
        print(v)

六:枚舉轉換
   從資料庫中移除某一個數值對應的值(a = 1),根據a的值匹配枚舉的型別

a = 1
print(VIP(a))

七:其他
1:IntEnum型別說明:枚舉的都是int型別的!
2:限制枚舉類型的值不能一樣

# ----------------------------------------------#
# 定义一个枚举类型
# ----------------------------------------------#
from enum import Enum
from enum import IntEnum, unique
class VIP(Enum):
    YELLOW = 1
    GREEN = 2
    BLACK = 3
    RED = 4


class Common:
    YELLOW = 2


# 注意这里显示的是VIP.Black而不是3,枚举的意义重在标签而不是标签的值
print(VIP.BLACK)


# ----------------------------------------------------#
# 枚举类和普通类的区别
# 字典和普通类封装数据:   1:可变    2:没有防止相同标签得功能
# ----------------------------------------------------#

# VIP.GREEN = 6     # 当改变值得时候报错

Common.YELLOW = 9   # 改变类变量的值
print(Common.YELLOW)
x = Common()           # 类的实例化
print(x.YELLOW)

# ----------------------------------------------#
# 枚举类型、枚举值、枚举名称
# ----------------------------------------------#
print("Black = ", VIP.BLACK.value)  # get value of Enum

print("name = ", VIP.BLACK.name)  # get value of Name,the type of name is str

print(VIP.BLACK)        # 名字为枚举类型

print(VIP['BLACK'])

# 枚举可以被遍历
for v in VIP:
    print(v)


# ----------------------------------------------#
# 枚举之间的比较,支持等值比较,不支持大小比较
# ----------------------------------------------#

result1 = VIP.GREEN == VIP.BLACK
result2 = VIP.GREEN.value == 2    # 注意这里的结果
print(result1, result2)


class VIP1(Enum):
    YELLOW = 1
    GREEN = 2
    BLACK = 3
    RED = 4
    WRITE = 5


result3 = VIP.GREEN == VIP1.GREEN
print(result3)

# ----------------------------------------------#
# 枚举注意事项
# ----------------------------------------------#


class VIP2(Enum):
    YELLOW = 1
    GREEN = 1   # 别名
    BLACK = 3
    RED = 4


for v in VIP2:
    print(v)

for v in VIP2.__members__.items():
    print(v)

for v in VIP2.__members__:
    print(v)

# ----------------------------------------------#
# 枚举转换
# ----------------------------------------------#

a = 1
print(VIP(a))       # 可以看做是类型转换

# ----------------------------------------------#
# 枚举补充
# ----------------------------------------------#

# 1:IntEnum类型说明


class VIP3(Enum):
    YELLOW = 1
    GREEN = "str"   # 别名
    BLACK = 3
    RED = 4


class VIP4(IntEnum):
    YELLOW = 1
    # GREEN = 'str'   # 字符串报错
    BLACK = 3
    RED = 4


# 2:限制枚举类型的值不能一样
@unique
class VIP6(Enum):
    YELLOW = 1
    GREEN = 1   # 当值相同的时候会报错!
    BLACK = 3
    RED = 4

以上是python枚舉型別是什麼? python枚舉類型的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除