logo

enum в Python

Изброяванията в Python се изпълняват с помощта на модула с име ' изброяване '. Изброяванията се създават с помощта на класове . Енумите имат имена и стойности свързани с тях. Нека разгледаме различните концепции за Python Enum в тази статия.

Какво представляват енумите и защо са полезни?

Изброяванията или Enums са набор от символни имена, обвързани с уникални стойности. Може да се повтори, за да се върнат неговите канонични членове в реда на дефиницията. Той предоставя начин за създаване на по-четлив и самодокументиращ се код чрез използване на смислени имена вместо произволни стойности.

Свойства на Enum

  • Енумите могат да се показват като низ или репр.
  • Енумите могат да бъдат проверени за техните типове с помощта на тип() .
  • " име ' ключовата дума се използва за показване на името на члена на enum.

Какви са предимствата на Enum

Някои от предимствата на използването на enums включват:



  • Лесна поддръжка: Енумите централизират дефиницията на стойностите на имената, което улеснява надграждането или разширяването на набора от стойности според нашите изисквания.
  • Четивност и самодокументиране: Енумите предоставят смислени имена на стойности, което прави кода по-четим от хората и разбиращ се.
  • Безопасност на типа : Енумите осигуряват известно ниво на безопасност на типа, като гарантират, че могат да се използват само валидни стойности.
  • Намален риск от грешки : Енумите помагат за предотвратяване на използването на неправилни или противоречиви стойности във вашия код, като намаляват риска от бъгове и грешки.

Enum клас в Python

Код на Python за демонстриране на изброявания 

Този код дефинира клас за изброяванеSeasonс четири члена: ПРОЛЕТ ЛЯТО ЕСЕН и ЗИМА. Той показва ключови свойства на enum, като например достъп до член на enum, неговото име и стойност. Освен това демонстрира как да получите списък с всички членове на enum. Изходът отразява типа стойност на името и списък с всичкиSeasonenum членове.

направете изпълним sh скрипт
Python
from enum import Enum class Season(Enum): SPRING = 1 SUMMER = 2 AUTUMN = 3 WINTER = 4 print(Season.SPRING) print(Season.SPRING.name) print(Season.SPRING.value) print(type(Season.SPRING)) print(repr(Season.SPRING)) print(list(Season)) 

Изход: 



Season.SPRING  
SPRING
1


[ ]

Режими на достъп  

Членовете на Enum могат да бъдат достъпни по два начина:

  • По стойност :- В този метод се предава стойността на enum член.
  • По име :- В този метод се предава името на члена enum.

Отделна стойност или име също може да бъде достъпна чрез „ име 'или' стойност ' ключова дума.

Кодът дефинира клас за изброяване ' Season' с четири члена. Той показва как да получите достъп до членове на enum по стойност и име. Той демонстрира, че можете да получите член на enum, като посочите неговата стойност или име и след това получите достъп до неговото име или стойност съответно. Този код предоставя примери както за базиран на стойности, така и за базиран на име достъп до член на enum.



Python
from enum import Enum class Season(Enum): SPRING = 1 SUMMER = 2 AUTUMN = 3 WINTER = 4 print('The enum member associated with value 2 is : ' Season(2).name) print('The enum member associated with name AUTUMN is : ' Season['AUTUMN'].value) 

Изход: 

The enum member associated with value 2 is : SUMMER  
The enum member associated with name AUTUMN is : 3

Изброяванията са итерируем . Те могат да бъдат итерирани с помощта на цикли

В този пример ще използваме за цикъл за да отпечатате всички членове на класа Enum.

Кодът дефинира клас за изброяване ' Season' с четири члена. Той преминава през членовете на enum и отпечатва техните стойности и имена. Резултатът показва стойността на всеки член на enum и неговото пълно квалифицирано име, предоставяйки начин за работа и показване на стойности на enum.

Python
from enum import Enum class Season(Enum): SPRING = 1 SUMMER = 2 AUTUMN = 3 WINTER = 4 for season in (Season): print(season.value'-'season) 

Изход: 

подрязване на javascript
1 - Season.SPRING  
2 - Season.SUMMER
3 - Season.AUTUMN
4 - Season.WINTER

Изброяванията поддържат H опепеляване

В този пример ще покажем как потребителите могат да хешират класа Enum, който може да се използва в речници или комплекти .

Този код използва ' enum' модул за дефиниране на клас за изброяване ' Animal' с три члена: куче котка и лъв. След това създава речникdiи му присвоява стойности въз основа на членове на enum. Накрая проверява дали речникът съответства на конкретна двойка ключ-стойност.

Python
import enum class Animal(enum.Enum): dog = 1 cat = 2 lion = 3 di = {} di[Animal.dog] = 'bark' di[Animal.lion] = 'roar' if di == {Animal.dog: 'bark' Animal.lion: 'roar'}: print('Enum is hashed') else: print('Enum is not hashed') 

Изход:

годинамесец
Enum is hashed  

Сравнете Enum в Python

Изброяванията поддържат два типа сравнения, които са:

  • Идентичност :- Те се проверяват с помощта на ключови думи ' е "и" не е '.
  • Равенство :- Сравнения на равенство на ' == "и" != ' типовете също се поддържат.

Този код дефинира клас за изброяванеAnimalс помощта наenumмодул с три члена: куче котка и лъв. След това извършва сравнения между членовете на enum, за да провери за равенство и неравенство.

Python
import enum class Animal(enum.Enum): dog = 1 cat = 2 lion = 3 if Animal.dog is Animal.cat: print('Dog and cat are same animals') else: print('Dog and cat are different animals') if Animal.lion != Animal.cat: print('Lions and cat are different') else: print('Lions and cat are same') 

Изход: 

Dog and cat are different animals  
Lions and cat are different