Note: Python version 3.x can be used
Enumeration format:
from enum import enum
New Class name = Enum (variable name, variable 1, variable 2 ...)
month = Enum (' Month ', (' Jan ', ' Feb ', ' Mar ', ' Apr ', ' may ', ' June ', ' Jul ', ' April ', ' Sep ', ' Oct ', ' Nov ', ' Dec '))
1.
Seasons = [' Spring ', ' Summer ', ' Fall ', ' Winter ']print (List (enumerate (seasons)))
Operation Result:
[(0, ' Spring '), (1, ' Summer '), (2, ' Fall '), (3, ' Winter ')]
2.
from enum Import enummonth = enum (' Month ', (' Jan ', ' Feb ', ' Mar ', ' April ', ' may ', ' June ', ' Jul ', ' April ', ' Sep ', ' Oct ', ' Nov ', ' Dec ')) for name, member in Month.__members__.items (): Print (name, ' = = ', member, ', ', Member.value)
Operation Result:
Jan = month. Jan, 1Feb = month. Feb, 2Mar = month. Mar, 3APR = month. APR, 4May = month. May, 5Jun = month. June, 6Jul = month. Jul, 7Aug = month. 8SEP = month. SEP, 9Oct = month. OCT, 10Nov = month. Nov, 11Dec = month. DEC, 12
3. When there are duplicate values in class, the first one is returned, and the other ignores
From enum import Enumclass Weekday (enum): Monday = 1 Tusday = 1 Wensdday =3 Thursday =9 Friday =5#print (We Ekday (1)) for n in Weekday:print (n)
Operation Result:
Weekday.mondayWeekday.wensddayWeekday.thursdayWeekday.friday
Manually hit the enum value, accidentally hit the wrong how to do, and have to find, really trouble. So, some people think, if there is a way to check the duplicate value is good, so: @unique came out
From enum import enum, @uniqueclass Weekday (enum): Monday = 1 Tusday = 1 Wensdday =3 Thursday =9 Friday =5p Rint (Weekday (1)
Operation Result:
Traceback (most recent): File "/usercode/file.py", line 7, in <module> class Weekday (Enum): File "/us r/lib/python3.4/enum.py ", line 524, in unique (enumeration, alias_details))
4. Some people are also thinking, I just do not change the ground! Can I print out the members in another way? So: __members__ is out.
from enum import enumclass weekday (enum): monday = 1 tusday = 1 wensdday = 3 thursday = 9 friday = 5for n,y in weekday.__ Members__.items (): print (n, '---', y, '--', y.value) f = Weekday.thursdayprint (F.value)
Operation Result:
Monday--weekday.monday--1tusday--weekday.tusday--1wensdday--weekday.wensdday--3thursday--weekday.thursday-- 9friday--Weekday.friday--59
5. Enumeration comparison: No bigger than size!! Can be compared to the same value
From enum import enum, unique# @uniqueclass Weekday (enum): Monday = 1 Tusday = 1 wensdday =3 Thursday =9 Fri Day =5print (Weekday.monday = = weekday.wensdday) print (Weekday.tusday is weekday.friday) print (Weekday.tusday > WEEKD Ay.friday)
Operation Result:
Falsefalsetraceback (most recent): File "/usercode/file.py", line <module> print (WEEKDAY.TUSDA Y > Weekday.friday) typeerror:unorderable types:weekday () > Weekday ()
See a good good blog, this talk about the content, he is more concise than Liao. I like it very much. How's My mess? I was purely a note-taking, not thinking so much, to change the structure to think more instead of wasting time.
66476601
Python Class: Object-oriented Advanced programming enum (enum), @unique