Python學習筆記 列舉Enum

2021-09-28 22:08:56 字數 3362 閱讀 1563

廖雪峰這部分寫的有點亂,推薦結合下面部落格學習:

筆記整理於廖雪峰官網和上述部落格

定義enum

from enum import enum,unique

#value屬性是賦給成員的int常量,預設由1開始

#所有列舉類成員名都不能重複

name=enum(

'name',(

'aaa'

,'bbb'

,'ccc'))

#成員值可以重複,第二個成員名被視為第乙個成員的別名

#自定義成員值需要enum的派生類

class

color

(enum)

: blue=

0#value被設定為0,而非預設的1

pink=

0 red=

2#只能獲取到第乙個成員名

print

(color.blue)

#color.blue

print

(color.pink)

#color.blue

print

(color(0)

)#color.blue

@unique#成員值不能重複

class

color

(enum)

: blue=

0#value被設定為0

pink=

1 red=

2

列舉取值和比較
from enum import enum,unique

@unique#成員值不能重複

class

color

(enum)

: blue=

0#value被設定為0

pink=

1 red=

2#通過成員名獲取成員

print

(color.blue)

#color.blue

print

(color[

'blue'])

#color.blue

#通過成員值獲取成員

print

(color(0)

)#color.blue

#獲取成員的名稱屬性name

print

(color.red.name)

#red

#獲取成員的值屬性value

print

(color.red.value)

#2#遍歷

for color in color:

print

(color)

#color.blue

#color.pink

#color.red

for color in color.__members__.items():

print

(color)

#('blue', )

#('pink', )

#('red', )

for name,member in color.__members__.items():

print

(name,

' '

,member,

' '

,member.value)

#blue color.blue 0

#pink color.pink 1

#red color.red 2

#is 、is not、==、!=

color.red is color.red #true

color.red ==color.red #true

color.red is

not color.blue #true

color.red !=color.blue #true

#value可以比較,成員不能比較

color.red.value>color.blue.value#true

color.red>color.blue

#typeerror: '>' not supported between instances of 'color' and 'color'

擴充套件列舉 intenum

直接複製部落格內容

intenum可以進行不同型別的整數列舉的比較

from enum import intenum

class

shape

(intenum)

: circle =

1 square =

2class

request

(intenum)

: post =

1 get =

2print

(shape.circle ==1)

# true

print

(shape.circle <3)

# true

print

(shape.circle == request.post)

# true

print

(shape.circle >= request.post)

# true

# -*- coding: utf-8 -*-

from enum import enum, unique

@unique

class

gender

(enum)

: male =

0 female =

1class

student

(object):

def__init__

(self, name, gender)

: self.name = name

# 開始沒有考慮到判斷類別和報錯,直接self.gender=gender

#看討論才發現這個細節if(

isinstance

(gender,gender)):

self.gender = gender

else

:raise valueerror(

'gender must be male(0) or female(1)!'

)# 測試:

bart = student(

'bart'

, gender.male)

if bart.gender == gender.male:

print

('測試通過!'

)else

:print

('測試失敗!'

)

Swift學習筆記 列舉

swift 中普通的列舉形式 enum direction 注意 在 swift 中,列舉的成員變數有著不同的值,他們不再是0,1,2,3 了 多個成員值也可以出現在同一行上,但是要用逗號隔開 enum direction 這一句過後,unknowdirection 就會被推斷是 direction...

C 學習筆記 列舉

一 c 的enum工具提供了另一種建立符號常量的方式,這種方式可以代替const。它還允許定義新型別,但必須按嚴格的限制進行。使用enum的語法與使用結構類似。例如 enum spectrum 這句語法包含兩個意義 1 讓spectrum成為新型別的名稱 spectrum被稱為列舉,就像struct...

Java學習筆記 列舉

public class testenum class color1第二種方式public class testenum class color2 public static final color2 red new color2 紅燈亮為1 public static final color2 g...