رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مفهوم مقدماتی ۶ دقیقه

شمارش‌ها (enum)

enum.Enum، auto، رفتار در مقایسه و انتخاب در برابر رشته و ثابت.

from enum import Enum, auto

class Payment(Enum):
    CARD = auto()
    CASH = auto()
    TRANSFER = auto()

def pay(method: Payment):
    if method is Payment.CASH:
        ...

چرا نه رشته؟ چون "cash" و "Cash" و "نقد" سه‌تایند ولی هیچ‌کدام خطا نمی‌دهند — باگِ ساکت. Enum انتخاب‌ها را یکی، کامل (IDE و mypy کمکت می‌کنند) و قابل‌گسترش می‌کند. برای مقدارِ نمایشی (value) رشته یا عدد بگذار، ولی مقایسه را همیشه با خودِ عضو (is Payment.CASH) انجام بده.

برداشت نادرست رایج

اشتباه رایج

enum فقط همان ثابت‌های سراسریِ مرتب‌شده است.

تصحیح

ثابتِ سراسری نه عضویت را اجبار می‌کند نه از غلطِ تایپی جلوگیری می‌کند؛ enum یک نوعِ واقعی با قرارداد است.

پیش‌نیازها

مطالب مرتبط

از همین بخش و با برچسب‌های مشترک

این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

وضعیت پیشرفت برای شمارش‌ها (enum)