0Pricing
Python Academy · درس

فئة Enum

عرّف مجموعات من الثوابت المُسمّاة

فئة Enum درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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

يمتلك كل عضو في التعداد قيمة .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» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «فئة Enum»؟

عرّف مجموعات من الثوابت المُسمّاة تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «فئة Enum»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. فئة Enum
  2. IntEnum وFlag
  3. أساسيات NamedTuple
  4. typing.NamedTuple
← العودة إلى Python Academy