Python中,有很多情況下我們需要定義枚舉類型,例如麻將中的牌種,一周中的天數(shù)等等。Python自帶的枚舉類型Enum,可以很方便地定義枚舉類型。但有時候,我們也需要在枚舉類型中定義一些參數(shù),本文將介紹Python中如何在枚舉類型中定義入?yún)ⅰ?/p>
import enum class Color(enum.Enum): RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) def __init__(self, rgb): self.rgb = rgb print(Color.RED.rgb) # 輸出 (255, 0, 0)
如上代碼所示,我們可以在枚舉類型的定義中添加__init__方法,這個方法可以接收傳入的參數(shù)并進行處理。對于上述示例,我們可以在枚舉類型Color中添加一個參數(shù)rgb,顏色對應的RGB值就可以在定義枚舉值時傳入。使用時,我們可以通過枚舉值的屬性來獲取這個參數(shù)。
需要注意的是,如果我們在枚舉類型定義中加入了__init__方法,那么每一個枚舉類型也必須為其傳入相應的參數(shù)值,否則會拋出TypeError異常。同時,枚舉類型的值也不能重復。
import enum class Fruit(enum.Enum): APPLE = ('red', 1) BANANA = ('yellow', 2) ORANGE = ('orange', 3) APPLE_GREEN = ('green', 1) def __init__(self, color, index): self.color = color self.index = index # 下面兩行代碼都會拋出TypeError異常: # Fruit.APPLE = ('red', 1) # Fruit.AVOCADO = ('green', 1) print(Fruit.APPLE.color) # 輸出 red print(Fruit.APPLE_GREEN.index) # 輸出 1
以上代碼定義了一個Fruit枚舉類型,每一個枚舉值都包含了顏色和編號兩個參數(shù)。需要注意的是,由于紅色蘋果和綠色蘋果在編號上是相同的,所以我們不能重復定義這兩個枚舉值。當我們需要在定義枚舉類型時傳入?yún)?shù)時,需要在__init__方法中添加這些參數(shù),并在每一個枚舉值中傳入相應的值。使用時,我們可以通過枚舉值的屬性來獲取這些參數(shù)。
總的來說,Python中的枚舉類型Enum很方便,在定義枚舉值時也可以傳入?yún)?shù)。只需要在枚舉類型中添加__init__方法即可。這些參數(shù)可以在__init__方法中進行處理,并在定義枚舉值時進行傳遞。使用時,我們可以通過枚舉值的屬性來獲取這些參數(shù)。