Usare gli Enum in Python

Mattepuffo's logo
Usare gli Enum in Python

Usare gli Enum in Python

Anche Python, come altri linguaggi che supportano la OOP, ha gli Enum.

Qui vengono definiti come classi, ma hanno delle differenze con le classi standard.

Vediamo qualche esempio per capire come funzionano.

Partiamo da questo Enum e da alcuni modo per stampare a video i dati:

from enum import Enum

class Macchine(Enum):
    FERRARI = 1,
    PORCHE = 2,
    LAMBORGHINI = 3

for macchina in Macchine:
    print(macchina)

print(Macchine.FERRARI)
print(Macchine['LAMBORGHINI'])

mac = Macchine.LAMBORGHINI
print(mac.value)

Come valore potete indicare qualsiasi tipologia di dato; qui abbiamo impostato degli interi.

Possiamo anche usare auto() per fare in modo che venga impostato un valore in automatico:

from enum import Enum, auto

class Macchine(Enum):
    FERRARI = auto(),
    PORCHE = auto(),
    LAMBORGHINI = auto()

for macchina in Macchine:
    print(macchina)

print(Macchine.FERRARI)
print(Macchine['LAMBORGHINI'])

mac = Macchine.LAMBORGHINI
print(mac.value)

Da quello che ho capito, non potete mischiare il "tipo" auto() con altri tipi definiti.

Possiamo anche usare il decorator @unique per far si che non si possano duplicare i valori:

from enum import Enum, auto, unique

@unique
class Macchine(Enum):
    FERRARI = auto(),
    PORCHE = auto(),
    LAMBORGHINI = auto(),
    FERRARI = auto(),

for macchina in Macchine:
    print(macchina)

print(Macchine.FERRARI)
print(Macchine['LAMBORGHINI'])

mac = Macchine.LAMBORGHINI
print(mac.value)

Questo darà errore.

Ovviamente il tema non si esaurisce qui; se volete approfondire potete vedere i vari altri esempi nella documentazione ufficiale.

Enjoy!


Condividi su Facebook

Commentami!