Jak tworzyć wyliczenie w Pythonie

Jak tworzyć wyliczenie w Pythonie
W tym artykule obejmie przewodnik o użyciu obiektów „Enum” w Python. Enum lub klasa „wyliczania” pozwala tworzyć unikalne stałe, których wartość pozostaje niezmieniona w programach i aplikacjach Python. Wszystkie próbki kodu w tym artykule są testowane z Python 3.9.5 na Ubuntu 21.04.

O Pythonie wyliczających

Jak wspomniano wcześniej, enums to obiekty o stałych wartościach. Mają symboliczne lub reprezentacyjne nazwy związane z ich odpowiednimi wartościami. Są w sposób podobny do innych zmiennych Python, ale są wyposażone w niektóre unikalne funkcje, takie jak obiekty bezpieczne typu i grupowanie. W Pythonie wyliczenia są zawsze reprezentowane przy użyciu znaków górnych, aby wskazać, że mają one stałe wartości. Wyliczenia są szczególnie przydatne w przypadkach, gdy masz predefiniowany zakres możliwych wartości i musisz wybrać i odwołać się do ograniczonych wyborów w logice programu. Wykorzystanie wyliczania w Pythonie można najlepiej zrozumieć za pomocą przykładów. Niektóre z nich są wyjaśnione poniżej.

Tworzenie wyliczania

Możesz tworzyć wyliczenie, konstruując nową klasę, która dziedziczy samą klasę enum. Spójrz na poniższą próbkę kodu:

Od Enum Import Enum
Kolor klasy (enum):
Żółty = 1
Czarny = 2
Biały = 3
Fiolet = 4
Orange = 5
Drukuj (kolor (1))
print (Rep (Color (1)))
Drukuj (kolor.ŻÓŁTY)
wydrukować (typ (kolor.ŻÓŁTY))
Drukuj (kolor.ŻÓŁTY.nazwa)
Drukuj (kolor.ŻÓŁTY.wartość)

Pierwsza instrukcja importuje klasę enum z modułu enum. Następnie konstruuje się nowa klasa o nazwie „Kolor”, dziedzicząc klasę enum. Następnie tworzone są niektóre zmienne (elementy enum) o stałych wartościach. Te zmienne reprezentują pięć możliwych opcji. Kilka kolejnych instrukcji drukowania pokazuje, w jaki sposób możesz uzyskać dostęp do tych wyliczeń, ich nazw i wartości. Te stwierdzenia są wyjaśniające. Aby uzyskać dostęp do możliwego wyboru enum, możesz użyć notacji kropki lub podać znaną wartość jako argument dla klasy. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

Kolor.ŻÓŁTY
Kolor.ŻÓŁTY
ŻÓŁTY
1

Jak widać na wyjściu, istnieje wiele sposobów dostępu do członków enum. Zauważ, że wywołanie funkcji drukowania na enu. Tak więc odnosząc się do koloru.Żółty zwróci kolor.Żółty, a nie 1.

Iteracja przez wyliczenia

Możesz iterować za pośrednictwem obiektu typu enum i zdobyć jego elementy za pomocą instrukcji pętli.

Od Enum Import Enum
Kolor klasy (enum):
Żółty = 1
Czarny = 2
Biały = 3
Fiolet = 4
Orange = 5
Dla C w kolorze:
Drukuj (c.Nazwa, c.wartość)

Za pomocą zmiennej „C” możesz uzyskać dostęp do każdego elementu obiektu typu Enum Color Enum. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe.

Żółty 1
Czarny 2
Biały 3
Purple 4
Orange 5

Nazwa członków enum musi być unikalna, ale duplikaty są dozwolone

Nie możesz utworzyć dwóch członków enum o tej samej nazwie, ale ich wartości nie mają takich ograniczeń. Poniższa próbka kodu spowoduje błąd, ponieważ istnieją dwa elementy enum o samych nazwach.

Od Enum Import Enum
Kolor klasy (enum):
Czarny = 1
Czarny = 2
Biały = 3
Fiolet = 4
Orange = 5

Po uruchomieniu powyższej próbki kodu należy uzyskać błąd podobny do tego:

Plik "/usr/lib/python3.9/enum.py ", wiersz 133, w __setitem__
Raise TypeError („Próba ponownego wykorzystania klucza: % R ' %)
TypeError: Próba ponownego wykorzystania klucza: „czarny”

Jak widać na wyjściu, zduplikowane nazwy nie są dozwolone dla członków enum. Jednak następujący kod jest ważny, gdy dwóch członków enum ma te same wartości.

Od Enum Import Enum
Kolor klasy (enum):
Żółty = 2
Czarny = 2
Biały = 3
Fiolet = 4
Orange = 5

Jeśli chcesz również wymusić unikalne wartości członków enum wraz z ich nazwami, możesz użyć „unikalnego” dekoratora, aby zapobiec zduplikowaniu wartości.

Od enum Import Enum, unikalne
@unikalny
Kolor klasy (enum):
Żółty = 2
Czarny = 2
Biały = 3
Fiolet = 4
Orange = 5

Dekorator „@Unique” wymusza obiekty typu enum, aby rzucić błąd, gdy są duplikatowe wartości przypisane do członków enum. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

Plik "/usr/lib/python3.9/enum.py ", linia 989, w unikalnym
Ways Valueerror („duplikat wartości stwierdzone w %r: %s ' %
Valueerror: zduplikowane wartości znalezione w: czarny -> żółty

Auto Przypisz wartości do członków enum

Jeśli wartości członków enum nie mają dla Ciebie znaczenia, możesz użyć metody „automatycznej” dostępnej w module enum, aby automatycznie przypisać liczby sekwencyjne do wyliczenia członków.

Od Enum Import Enum, Auto
Kolor klasy (enum):
Żółty = auto ()
Czarny = auto ()
Biały = auto ()
Fiolet = auto ()
Orange = auto ()
Dla C w kolorze:
Drukuj (c.Nazwa, c.wartość)

Jak widać w wyżej wymienionej próbce kodu, zamiast jawnie przypisywać niektóre wartości do członków enum, funkcja automatyczna została wywołana podczas tworzenia każdego członka. Metoda automatycznego zawsze przypisuje 1 jako pierwszą wartość. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

Żółty 1
Czarny 2
Biały 3
Purple 4
Orange 5

Wniosek

Enums Typ Obiekty w Pythonie pozwalają tworzyć zmienne o stałym stylu o unikalnych nazwach. Te zmienne, zwykle nazywane członkami enum, mogą być reprezentowane przez ludzkie czytelne struny. Enums są szczególnie przydatne, gdy chcesz wybrać jeden lub więcej opcji z grupy ograniczonych opcji.