Piszę kod Pythona 2 przez około 3 lata, i chociaż znam go już od dawna, zaczęliśmy używać ich w naszym projekcie (backported - pypi package enum34).Co to jest przydatny przypadek do wyliczenia w python?
Chciałbym zrozumieć, kiedy ich użyć.
Jednym z miejsc, w którym zaczęliśmy z nich korzystać, było odwzorowanie niektórych wyliczeń poziomu bazy danych postgresów na wartości w pythonach. Dlatego mamy tej klasy ENUM
class Status(enum.Enum):
active = 'active'
inactive = 'inactive'
ale potem podczas korzystania z tych, jakie skończyło się je tak:
if value == Status.active.value:
...
I tak stosując stałe teksty w tym przypadku jest mniej przydatne niż tylko za pomocą bardziej proste klasy, jak to
class Status(object):
active = 'active'
inactive = 'inactive'
Bo moglibyśmy to wykorzystać łatwiej, jak value == Status.active
.
Do tej pory jedynym miejscem, w którym znalazłem to przydatne - choć nie tak przydatne, jak bym chciał - jest w docstrukcji. Zamiast jawnie mówić, że dozwolone wartości to "aktywne" i "nieaktywne", mogę po prostu oświadczyć, że mój formalny parametr oczekuje członka wyliczenia statusu (bardziej przydatny, gdy istnieje więcej statusów)
Tak naprawdę nie Węzeł, jaki jest ich dokładny przypadek użycia - nie wiem, jak są lepsze niż stałe łańcuchowe.
Krótko mówiąc: kiedy używać wyrażeń?
Jeśli wybierzesz napisy, DocString może również powiedzieć "musi być jedną ze stałych zdefiniowanych w klasie" Status ". – 5gon12eder
Aby odpowiedzieć na pytanie tytułowe: [Python enum, kiedy i gdzie użyć?] (Http://stackoverflow.com/q/22586895/208880) –