欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python3 enum模塊

系統(tǒng) 1901 0
原文鏈接: https://www.cnblogs.com/bdhk/p/7506691.html

枚舉是綁定到唯一的常量值的一組符號名稱(成員)。在枚舉中,成員可以通過身份進(jìn)行比較,枚舉本身可以迭代。

1.Enum模塊

該模塊定義了四個枚舉類,可用于定義唯一的名稱和值集:Enum,IntEnum,F(xiàn)lag和IntFlag。它還定義了一個裝飾器,unique()和一個helper,auto。

Content Description ?Remarks?
class enum.Enum? 創(chuàng)建枚舉實(shí)例的基類 ?
class enum.IntEnum? 用于創(chuàng)建同屬于int子類枚舉常量的基類 ??????????????????????????
class enum.IntFlag 用于創(chuàng)建枚舉常量的基類,可以使用按位運(yùn)算符組合而不會丟失其IntFlag成員資格。 IntFlag成員也是int的子類。 New in version 3.6
class enum.Flag 用于創(chuàng)建枚舉常量的基類,可以使用按位運(yùn)算符組合而不會丟失其IntFlag成員資格。 New in version 3.6
unique()??????????????????? 枚舉類裝飾器,用于確保任何一個值只有一個名字與其綁定 ?
class enum.auto 實(shí)例被替換為枚舉成員的合適值 New in version 3.6

2.創(chuàng)建一個枚舉類

創(chuàng)建一個枚舉類很簡單,如下所示:

            
              >>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
...
            
          

說明:

(1) 枚舉類得成員值可以是任何值,比如int,str等。如果確定值不重要,你可以使用auto實(shí)例來產(chǎn)生一個合適值。但是混用auto實(shí)例和其他值一定要慎重。

(2) 類Color是一個枚舉。屬性Color.RED,Color.GREEN等是枚舉成員(或枚舉成員),并且是函數(shù)常量。枚舉成員具有名稱和值(Color.RED的名稱為RED,Color.BLUE的值為3等)

枚舉成員擁有易讀的字符表現(xiàn)形式:

            
              >>> print(Color.RED)
Color.RED
            
          

利用repr()函數(shù)可以得到更多信息:

            
              >>> print(repr(Color.RED))

              
            
          

枚舉成員的類型是它所屬的枚舉:

            
              >>> type(Color.RED)

              
                
>>> isinstance(Color.GREEN, Color)
True
>>>
              
            
          

枚舉成員也有一個只包含其項目名稱的屬性:

            
              >>> print(Color.RED.name)
RED
            
          

枚舉支持迭代,按定義順序:

            
              >>> class Shake(Enum):
...     VANILLA = 7
...     CHOCOLATE = 4
...     COOKIES = 9
...     MINT = 3
...
>>> for shake in Shake:
...     print(shake)
...
Shake.VANILLA
Shake.CHOCOLATE
Shake.COOKIES
Shake.MINT
            
          
            枚舉成員可以是哈希的,所以它們可以在字典和集合中使用:
          
            
              >>> apples = {}
>>> apples[Color.RED] = 'red delicious'
>>> apples[Color.GREEN] = 'granny smith'
>>> apples == {Color.RED: 'red delicious', Color.GREEN: 'granny smith'}
True
            
          

?

3.程序訪問枚舉成員及其屬性

有時候以編程方式訪問成員函數(shù)(即Color.RED不會執(zhí)行的情況是有用的,因?yàn)樵诔绦驅(qū)懭霑r間沒有確切的顏色)。枚舉允許這樣的訪問:

            
              >>> Color(1)

              
                
>>> Color(3)

                
              
            
          

如果你想用名字訪問枚舉成員,可以使用項目訪問:

            
              >>> Color['RED']

              
                
>>> Color['GREEN']

                
              
            
          

如果你有一個枚舉成員,并且需要它的名字和值:

            
              >>> member = Color.RED
>>> member.name
'RED'
>>> member.value
1
            
          

4.復(fù)用枚舉成員和值

兩個枚舉成員擁有相同的名字是不合法的:

            
              >>> class Shape(Enum):
...     SQUARE = 2
...     SQUARE = 3
...
Traceback (most recent call last):
...
TypeError: Attempted to reuse key: 'SQUARE'
            
          

但是,兩個枚舉成員允許擁有相同的值。如果兩個成員A和B有相同的值(并且A先定義),B是A的一個別名。根據(jù)值查詢A和B都會放回A。根據(jù)名字查詢B也會返回A。

            
              >>> class Shape(Enum):
...     SQUARE = 2
...     DIAMOND = 1
...     CIRCLE = 3
...     ALIAS_FOR_SQUARE = 2
...
>>> Shape.SQUARE

              
                
>>> Shape.ALIAS_FOR_SQUARE

                
                  
>>> Shape(2)

                  
                
              
            
          

注意:嘗試去創(chuàng)建一個與已定義屬性同名的成員或者嘗試創(chuàng)建一個與成員同名的方法是不允許的。

5.確保唯一的枚舉值

默認(rèn)情況下,枚舉允許多個名稱作為同一個值的別名。當(dāng)不需要此行為時,可以使用以下裝飾器來確保每個值在枚舉中僅使用一次:

@ enum. unique

專門用于枚舉的類裝飾器。它搜索枚舉的__members__收集它發(fā)現(xiàn)的任何別名;如果有的話,會發(fā)現(xiàn)ValueError帶有細(xì)節(jié):

            
              >>> from enum import Enum, unique
>>> @unique
... class Mistake(Enum):
...     ONE = 1
...     TWO = 2
...     THREE = 3
...     FOUR = 3
...
Traceback (most recent call last):
...
ValueError: duplicate values found in 
              
                : FOUR -> THREE
              
            
          

6.使用自動賦值

如果確切的值不重要,您可以使用auto:

            
              >>> from enum import Enum, auto
>>> class Color(Enum):
...     RED = auto()
...     BLUE = auto()
...     GREEN = auto()
...
>>> list(Color)
[
              
                , 
                
                  , 
                  
                    ]
                  
                
              
            
          

auto產(chǎn)生的值由_generate_next_value_()函數(shù)產(chǎn)生,該函數(shù)可以被重寫:

            
              >>> class AutoName(Enum):
...     def _generate_next_value_(name, start, count, last_values):
...         return name
...
>>> class Ordinal(AutoName):
...     NORTH = auto()
...     SOUTH = auto()
...     EAST = auto()
...     WEST = auto()
...
>>> list(Ordinal)
[
              
                , 
                
                  , 
                  
                    , 
                    
                      ]
                    
                  
                
              
            
          

?

?

?

轉(zhuǎn)自:https://www.cnblogs.com/bdhk/p/7506691.html


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美高潮| 99久久九九爱看免费直播 | 亚洲一区中文字幕在线观看 | 久操网站| 欧美综合成人网 | 久久久久久久久久免观看 | 五月婷婷之综合激情 | 日本欧美中文字幕人在线 | av在线播放免费 | 天天色综合天天 | 精品无码久久久久久国产 | 日韩大片免费在线观看 | 日韩在线观看一区二区不卡视频 | 一级毛片看真人在线视频 | 欧美人xx| 天堂资源| 国产一区二区欧美 | 天天色综合久久 | 一区二区三区四区电影 | 欧美第一色 | 亚洲一本 | 午夜在线免费观看 | 亚洲精品99| 妞干网在线免费观看 | 久久综合一个色综合网 | 欧美视屏一区二区 | 亚洲视频一区二区 | 色黄网站在线观看 | 国产精品麻豆视频 | 久久综合九色综合欧美狠狠 | 国产欧美日本 | 亚洲视频在线看 | 国产精品久久久久久久久久免费看 | 欧美成人三级一区二区在线观看 | 九九在线精品视频播放 | 欧美久久一区二区三区 | 亚洲成a人片在线观看www流畅 | www.嫩草影院.com | 欧美日韩中文一区 | 亚洲欧美日韩另类精品一区二区三区 | 成人精品久久久 |