0Pricing
Python Academy · Lekcja

Klasa Enum

Definiuj grupy nazwanych stałych

Klasa Enum to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Dlaczego enumy?

enum (wyliczenie) to zbiór nazwanych stałych wartości, które są ze sobą powiązane. Zamiast rozrzucać po kodzie nieczytelne ciągi znaków lub liczby, każdej wartości nadaje się jasną nazwę.

  • Kod, który sam wyjaśnia swoje działanie.
  • Ochrona przed literówkami.
  • Stały, znany zbiór możliwości.

Definiowanie enuma

Należy utworzyć klasę dziedziczącą po Enum i wypisać elementy w postaci NAME = value. Zgodnie z konwencją nazwy elementów zapisuje się wielkimi literami.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED)

name i value

Każdy element enuma ma właściwość .name (identyfikator) oraz .value (przypisaną wartość).

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2

c = Color.GREEN
print(c.name)
print(c.value)

Elementy są singletonami

Każdy element jest unikatowym obiektem typu singleton. Elementy należy porównywać za pomocą is lub ==; ten sam element zawsze jest dokładnie tym samym obiektem.

from enum import Enum

class Color(Enum):
    RED = 1
    BLUE = 2

print(Color.RED is Color.RED)
print(Color.RED == Color.BLUE)

Wyszukiwanie według wartości

Wywołanie klasy enuma z wartością zwraca pasujący element. Nieznana wartość powoduje zgłoszenie 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)

Wyszukiwanie według nazwy

Aby wyszukać element po nazwie, należy użyć dostępu za pomocą nawiasów kwadratowych i przekazać ciąg znaków zawierający nazwę elementu. Jest to przydatne podczas odczytywania nazw z konfiguracji lub danych wprowadzonych przez użytkownika.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2

print(Color['GREEN'])

Iterowanie po elementach

Po enumie można iterować. Pętla zwraca każdy element w kolejności definicji, co świetnie sprawdza się przy tworzeniu menu lub sprawdzaniu poprawności wyborów.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

for c in Color:
    print(c.name, c.value)

Wartości tekstowe

Wartości enumów nie muszą być liczbami całkowitymi. Często używa się ciągów znaków, zwłaszcza gdy wartości będą serializowane lub przechowywane.

from enum import Enum

class Status(Enum):
    ACTIVE = 'active'
    PAUSED = 'paused'
    CLOSED = 'closed'

print(Status.PAUSED.value)
print(Status('closed'))

auto() dla wartości

Gdy konkretne liczby nie mają znaczenia, należy użyć auto(), aby automatycznie przypisać wartości rozpoczynające się od 1 i zwiększające się o 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)

Enumy w funkcjach

Używanie enumów jako parametrów funkcji jasno określa intencję i chroni przed nieprawidłowymi danymi wejściowymi. W logice programu należy bezpośrednio porównywać elementy.

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))

Elementy w słowniku

Elementy enumów są hashowalne, więc mogą być kluczami słowników. To przejrzysty sposób na przypisywanie danych do poszczególnych nazwanych stałych.

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])

Szybkie sprawdzenie

Jak poprawnie porównać dwa elementy enuma pod kątem tożsamości?

Podsumowanie

Nauczyli się Państwo definiować grupy nazwanych stałych za pomocą Enum.

  • Elementy mają właściwości .name i .value.
  • Wyszukiwanie według wartości odbywa się za pomocą Color(v), a według nazwy — za pomocą Color['NAME'].
  • Po enumach można iterować, a ich elementy są singletonami.
  • Należy używać auto(), gdy dokładne wartości nie mają znaczenia.

Często zadawane pytania

Czy lekcja „Klasa Enum” jest bezpłatna?

Tak — pełny tekst „Klasa Enum” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Klasa Enum”?

Definiuj grupy nazwanych stałych Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Klasa Enum”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Klasa Enum
  2. IntEnum i Flag
  3. Podstawy NamedTuple
  4. typing.NamedTuple
← Powrót do Python Academy