Python String to Enum Conversion

Python String to Enum Conversion

La conversione della stringa in Enum in Python migliora la leggibilità del codice poiché Enum offre un modo coerente per specificare un insieme di valori correlati. Questa conversione rende anche il codice più semplice da mantenere. Aiuta anche a evitare errori o errori di battitura. Più specificamente, i valori costanti elencati sono definiti al momento della compilazione ma non possono essere modificati durante l'esecuzione.

Questo blog discuterà dei seguenti approcci:

  • Metodo 1: conversione String to Enum in Python usando la funzione "getAttr ()"
  • Metodo 2: conversione String to Enum in Python usando l'attributo "__members__"
  • Metodo 3: conversione String to Enum in Python usando il metodo della classe enum

Metodo 1: conversione String to Enum in Python usando la funzione "getAttr ()"

In Python, "getattr ()"È una funzione Python incorporata che recupera il valore di un attributo dell'oggetto. Questa funzione accetta due argomenti. Il primo argomento rappresenta l'oggetto selezionato e il secondo si riferisce all'attributo il cui valore si desidera ottenere. Più specificamente, questa funzione può anche convertire una stringa in enum.

Sintassi

getattr (oggetto, attr_name)

Qui, il "getattr ()"La funzione recupera il valore dell'attributo specificato"attr_name"Del pertinente"Oggetto".

Esempio

Ora, controlliamo il metodo per convertire una stringa in enum usando "getattr ()" funzione. Per farlo, prima importa il "enum"Modulo dalla classe Enum:

da enum import enum

Quindi, definisci una classe enum chiamata "Frutta", Aggiungi le costanti elencate e specifica i corrispondenti valori interi:

Frutto di classe (enum):
Apple = 3
Mango = 6
Arancione = 9

Crea una stringa e memorizza il nome costante enumerato:

Fruit_str = 'Apple'

Invocare il "getattr ()"Funzione e passa il"Frutta"ENUM oggetto e il nuovo creato come nome dell'attributo:

Fruit_enum = getattr (frutto, frutto_str)

Stampa il valore risultante sulla console:

Stampa (Fruit_enum)

Si può osservare dall'output che il "Frutta.Mela"È una costante elencata:

Tuttavia, un "Attributeerror"L'eccezione verrà attivata in caso di passaggio del nome dell'attributo non giustificato come valore costante enum:

Fruit_str = 'Peach'

Per gestire l'eccezione menzionata, aggiungi il blocco Try-Except come segue:

Tentativo:
Fruit_enum = getattr (frutto, frutto_str)
Stampa (Fruit_enum)
Tranne AttributeError:
print (f'error: Fruit_str non è nell'elenco ')

Aggiungi il blocco di codice con “Tentativo"Deve essere eseguito quando è stata trovata la costante enum. Per l'altro caso, specificare le rispettive dichiarazioni nel "tranne"Blocco:

Metodo 2: conversione String to Enum in Python usando l'attributo "__members__"

La classe Enum Python offre un attributo chiamato "__membri__"Questo viene creato automaticamente. Questo attributo è più simile a un dizionario che mappa il membro elencato ai valori corrispondenti.

Sintassi

Oggetto.__members __ [attr_name]

Qui, il "__membri__ "L'attributo ottiene il valore dell'attributo specificato"attr_name"Dell'Enum specificato"Oggetto".

Esempio

Per usare il "__membri__"Attributo per una stringa alla conversione enum, in primo luogo, crea una stringa il cui valore è uguale alla costante enum richiesta:

Fruit_str = 'mango'

Quindi, specifica il seguente codice nel blocco Try-Except del codice:

Tentativo:
Fruit_enum = frutta.__Members __ [Fruit_Str]
Stampa (Fruit_enum)
Tranne AttributeError:
print (f'error: Fruit_str non è nell'elenco ')

La prima dichiarazione aggiunta nel blocco Try tenta di accedere al "Fruit_Str"Membro della classe Fruit Enum con il"__membri__"Attributo. Se la stringa specificata viene abbinata a una qualsiasi delle costanti enum, il valore corrispondente verrà stampato. Tuttavia, nell'altro caso, il "tranne"Il blocco visualizza il messaggio definito:

Metodo 3: conversione String to Enum in Python usando il metodo della classe enum

La classe Enum fornisce anche un metodo per convertire una stringa in enum in Python. Per utilizzarlo, controlla la sintassi dichiarata.

Sintassi

Enum...

Esempio

Specificare il valore costante ENUM richiesto in una stringa:

Fruit_str = 6

Quindi, passa la stringa creata utilizzando il metodo di classe enum frutto () e stampare l'uscita sulla console:

Tentativo:
Fruit_enum = Fruit (Fruit_STR)
Stampa (Fruit_enum)
Tranne AttributeError:
print (f'error: Fruit_str non è nell'elenco ')

Si può osservare che il nome del membro elencato è stato recuperato.

Conclusione

Per convertire la stringa in enum in Python, il "getattr ()" funzione, "__membri__"Attributo o il metodo della classe Enum viene utilizzato. Tutti questi approcci recuperano la costante elencata della classe specificata. Inoltre, in combinazione con gli approcci dichiarati, il tentativo è anche quello che aiuta a raggiungere la funzionalità desiderata. Questo post ha coperto diversi metodi per la conversione di String per enum in Python.