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
.namei.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.