คลาส Enum
กำหนดกลุ่มค่าคงที่ที่มีชื่อ
คลาส Enum เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
ทำไมต้องใช้การแจกแจง
การแจกแจง (enumeration) คือชุดค่าคงที่ที่มีชื่อและอยู่ในกลุ่มเดียวกัน แทนที่จะกระจายสตริงหรือตัวเลขที่ไม่มีความหมายชัดเจนไว้ทั่วโค้ด คุณสามารถตั้งชื่อที่เข้าใจง่ายให้แต่ละค่าได้
- โค้ดอธิบายตัวเองได้
- ป้องกันการพิมพ์ผิด
- มีชุดตัวเลือกที่กำหนดไว้และทราบแน่นอน
การกำหนดการแจกแจง
สืบทอดคลาสย่อยจาก Enum แล้วระบุสมาชิกในรูป NAME = value โดยทั่วไปชื่อสมาชิกจะเขียนด้วยตัวพิมพ์ใหญ่
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED)ชื่อและค่า
สมาชิกของการแจกแจงทุกตัวมี .name (ตัวระบุ) และ .value (ค่าที่กำหนดให้)
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
c = Color.GREEN
print(c.name)
print(c.value)สมาชิกเป็นซิงเกิลตัน
สมาชิกแต่ละตัวเป็นออบเจ็กต์ซิงเกิลตันที่ไม่ซ้ำกัน เปรียบเทียบสมาชิกด้วย is หรือ == ได้ โดยสมาชิกตัวเดิมจะเป็นออบเจ็กต์เดียวกันเสมอ
from enum import Enum
class Color(Enum):
RED = 1
BLUE = 2
print(Color.RED is Color.RED)
print(Color.RED == Color.BLUE)ค้นหาด้วยค่า
เรียกคลาสการแจกแจงด้วยค่าเพื่อรับสมาชิกที่ตรงกัน หากไม่พบค่าดังกล่าว จะเกิด ValueError
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
print(Color(2))
try:
Color(99)
except ValueError as e:
print('Bad value:', e)ค้นหาด้วยชื่อ
ใช้การเข้าถึงด้วยวงเล็บเหลี่ยมร่วมกับสตริงชื่อสมาชิกเพื่อค้นหาสมาชิกด้วยชื่อ วิธีนี้มีประโยชน์เมื่ออ่านชื่อจากการกำหนดค่าหรือข้อมูลนำเข้าของผู้ใช้
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
print(Color['GREEN'])การวนซ้ำสมาชิก
การแจกแจงสามารถวนซ้ำได้ การวนซ้ำจะคืนสมาชิกแต่ละตัวตามลำดับที่กำหนดไว้ เหมาะสำหรับการสร้างเมนูหรือตรวจสอบตัวเลือก
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
for c in Color:
print(c.name, c.value)ค่าชนิดสตริง
ค่าของการแจกแจงไม่ได้จำกัดอยู่แค่จำนวนเต็ม สตริงก็เป็นค่าที่ใช้กันทั่วไป โดยเฉพาะค่าที่ต้องแปลงเป็นข้อมูลจัดเก็บหรือบันทึกไว้
from enum import Enum
class Status(Enum):
ACTIVE = 'active'
PAUSED = 'paused'
CLOSED = 'closed'
print(Status.PAUSED.value)
print(Status('closed'))ใช้ auto() สำหรับค่า
เมื่อค่าตัวเลขจริงไม่สำคัญ ให้ใช้ auto() เพื่อกำหนดค่าโดยอัตโนมัติ โดยเริ่มที่ 1 แล้วเพิ่มขึ้นทีละหนึ่ง
from enum import Enum, auto
class Direction(Enum):
NORTH = auto()
SOUTH = auto()
EAST = auto()
WEST = auto()
for d in Direction:
print(d.name, d.value)การแจกแจงในฟังก์ชัน
การใช้การแจกแจงเป็นพารามิเตอร์ของฟังก์ชันช่วยสื่อเจตนาได้ชัดเจนและป้องกันข้อมูลนำเข้าที่ไม่ถูกต้อง ภายในตรรกะของโปรแกรมสามารถเปรียบเทียบสมาชิกได้โดยตรง
from enum import Enum
class Light(Enum):
RED = 1
YELLOW = 2
GREEN = 3
def can_go(light):
return light is Light.GREEN
print(can_go(Light.GREEN))
print(can_go(Light.RED))สมาชิกในดิกชันนารี
สมาชิกของการแจกแจงแฮชได้ จึงใช้เป็นคีย์ของดิกชันนารีได้ นี่เป็นวิธีที่สะอาดในการผูกข้อมูลเข้ากับค่าคงที่ที่มีชื่อแต่ละตัว
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
hex_codes = {Color.RED: '#ff0000', Color.GREEN: '#00ff00'}
print(hex_codes[Color.RED])ตรวจสอบอย่างรวดเร็ว
คุณจะเปรียบเทียบสมาชิกของการแจกแจงสองตัวเพื่อดูว่าเป็นออบเจ็กต์เดียวกันอย่างถูกต้องได้อย่างไร
สรุปทบทวน
คุณได้เรียนรู้การกำหนดกลุ่มค่าคงที่ที่มีชื่อด้วย Enum
- สมาชิกมี
.nameและ.value - ค้นหาด้วยค่าด้วย
Color(v)และค้นหาด้วยชื่อด้วยColor['NAME'] - การแจกแจงสามารถวนซ้ำได้ และสมาชิกเป็นซิงเกิลตัน
- ใช้
auto()เมื่อค่าที่แน่นอนไม่สำคัญ
คำถามที่พบบ่อย
บทเรียน “คลาส Enum” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คลาส Enum” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คลาส Enum”
กำหนดกลุ่มค่าคงที่ที่มีชื่อ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คลาส Enum” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ