การแจงนับคือชุดของตัวระบุ (สมาชิก) ที่กำหนดค่าที่ไม่ซ้ำกันและคงที่ ในการแจงนับ สมาชิกสามารถเปรียบเทียบได้โดยใช้ข้อมูลประจำตัว ออบเจ็กต์การแจงนับยังสามารถตัดทอนได้
โมดูล enum กำหนดคลาสต่อไปนี้
อีนุม :คลาสพื้นฐานสำหรับการสร้างค่าคงที่ที่แจกแจง
IntEnum :คลาสพื้นฐานสำหรับการสร้างค่าคงที่ที่แจกแจงที่เป็นคลาสย่อยของ int ด้วย
การแจงนับถูกสร้างขึ้นโดยใช้ไวยากรณ์คลาส
#enumexample.py from enum import Enum class langs(Enum): Python = 1 Java = 2 Cpp = 3 Ruby = 4
สมาชิกการแจงนับมีการแสดงสตริงที่มนุษย์อ่านได้และการแสดงตัวแทน
>>> from enumexample import langs >>> print (langs.Python) langs.Python >>> print (repr(langs.Python)) <langs.Python: 1>
สมาชิก enum แต่ละคนมีคุณสมบัติชื่อและค่า
>>> x = langs.Python >>> x.name 'Python' >>> x.value 1
คุณสามารถใช้ลูปเพื่อวนซ้ำสมาชิกทั้งหมดได้
>>> for lang in langs: print (lang.name, lang.value) Python 1 Java 2 Cpp 3 Ruby 4
สมาชิกสามารถเข้าถึงได้ด้วยความช่วยเหลือของค่าหรือตัวตน
>>> langs(3) <langs.Cpp: 3> >>> langs['Java'] <langs.Java: 2>
ตัวดำเนินการข้อมูลประจำตัวเป็นและไม่สามารถใช้เปรียบเทียบสมาชิกของ enum ได้
>>> x = langs(2) >>> y = langs(4) >>> x is y False
การมีสมาชิก enum สองคนที่มีชื่อเดียวกันนั้นไม่ถูกต้อง อย่างไรก็ตาม สมาชิก enum สองคนได้รับอนุญาตให้มีค่าเท่ากัน เปลี่ยน enumexample.py เป็นดังต่อไปนี้:
from enum import Enum class langs(Enum): Python = 1 Java = 2 Cpp = 3 Ruby = 4 Cplusplus = 3 >>> from enumexample import langs >>> langs.Cpp <langs.Cpp: 3> >>> langs.Cplusplus <langs.Cpp: 3> >>> langs(3) <langs.Cpp: 3>
ตามค่าเริ่มต้น การแจงนับสามารถมีได้หลายชื่อเป็นนามแฝงสำหรับค่าเดียวกัน เพื่อให้แน่ใจว่ามีค่าที่ไม่ซ้ำกัน ให้ใช้ @enum.unique A class decorator สำหรับการแจงนับโดยเฉพาะ