logo

enum i Python

Uppräkningar i Python implementeras genom att använda modulen som heter ' uppräkning '. Uppräkningar skapas med hjälp av klasser . Enums har namn och värderingar förknippas med dem. Låt oss täcka de olika begreppen Python Enum i denna artikel.

Vad är Enums och varför är de användbara?

Enumerations eller Enums är en uppsättning symboliska namn bundna till unika värden. Det kan upprepas för att returnera dess kanoniska medlemmar i definitionsordning. Det ger ett sätt att skapa mer läsbar och självdokumenterande kod genom att använda meningsfulla namn istället för godtyckliga värden.

Egenskaper hos Enum

  • Uppräkningar kan visas som sträng eller repr.
  • Uppräkningar kan kontrolleras för deras typer med hjälp av typ() .
  • den ' namn ' nyckelord används för att visa namnet på enum-medlemmen.

Vilka är fördelarna med Enum

Några av fördelarna med att använda enums inkluderar:



  • Enkelt underhåll: Enums centraliserar definitionen av namnvärden vilket gör det lättare att uppgradera eller utöka uppsättningen värden enligt våra krav.
  • Läsbarhet och självdokumentation: Enums ger meningsfulla namn på värden som gör koden mer läsbar och självförklarande.
  • Typ säkerhet : Uppräkningar ger en viss nivå av typsäkerhet som säkerställer att endast giltiga värden kan användas.
  • Minskad risk för fel : Uppräkningar hjälper till att förhindra användningen av felaktiga eller inkonsekventa värden i din kod, vilket minskar risken för buggar och fel.

Enum-klass i Python

Python-kod för att demonstrera uppräkningar 

Denna kod definierar en uppräkningsklassSeasonmed fyra medlemmar: VÅR SOMMAR HÖST och VINTER. Den visar upp nyckelegenskaperna för enummet som att få tillgång till en enummedlems namn och värde. Dessutom visar den hur man får en lista över alla enummedlemmar. Utdatan återspeglar namnets värdetyp och en lista över allaSeasonuppräkning medlemmar.

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

Produktion: 



Season.SPRING  
SPRING
1


[ ]

Åtkomstlägen  

Enum-medlemmar kan nås på två sätt:

  • Efter värde :- I denna metod skickas värdet av enum medlem.
  • Vid namn :- I denna metod skickas namnet på enum-medlemmen.

Ett separat värde eller namn kan också nås med hjälp av ' namn ' eller ' värde ' nyckelord.

Koden definierar en uppräkningsklass ' Season' med fyra medlemmar. Den visar hur man får tillgång till enum-medlemmar efter värde och namn. Det visar att du kan få en enum-medlem genom att ange dess värde eller namn och sedan komma åt dess namn eller värde i enlighet med detta. Den här koden ger exempel för både värdebaserad och namnbaserad enummedlemsåtkomst.



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) 

Produktion: 

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

Uppräkningar är iterabel . De kan itereras med slingor

I det här exemplet kommer vi att använda för slinga för att skriva ut alla medlemmar i klassen Enum.

Koden definierar en uppräkningsklass ' Season' med fyra medlemmar. Den itererar genom enum-medlemmarna och skriver ut deras värden och namn. Utdatan visar varje enum-medlems värde och dess fullständiga namn, vilket ger ett sätt att arbeta med och visa enum-värden.

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

Produktion: 

1 - Season.SPRING  
2 - Season.SUMMER
3 - Season.AUTUMN
4 - Season.WINTER

Uppräkningar stöder H askning

I det här exemplet kommer vi att visa hur användare kan hasha klassen Enum som kan användas i ordböcker eller set .

Denna kod använder ' enum' modul för att definiera en uppräkningsklass ' Animal' med tre medlemmar: hundkatt och lejon. Det skapar sedan en ordbokdioch tilldelar värden till den baserat på enum-medlemmar. Slutligen kontrollerar den om ordboken matchar ett specifikt nyckel-värdepar.

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

Produktion:

Enum is hashed  

Jämför Enums i Python

Uppräkningar stöder två typer av jämförelser som är:

  • Identitet :- Dessa kontrolleras med nyckelord ' är ' och ' är inte '.
  • Jämställdhet :- Jämställdhetsjämförelser av ' == ' och ' != ' typer stöds också.

Denna kod definierar en uppräkningsklassAnimalmed hjälp avenummodul med tre medlemmar: hundkatt och lejon. Den utför sedan jämförelser mellan enum-medlemmar för att kontrollera jämlikhet och ojämlikhet.

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

Produktion: 

Dog and cat are different animals  
Lions and cat are different