Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Enums in Python effektiv nutzen und darstellen?

Wie kann ich Enums in Python effektiv nutzen und darstellen?

Susan Sarandon
Freigeben: 2024-12-25 00:23:10
Original
810 Leute haben es durchsucht

How Can I Effectively Use and Represent Enums in Python?

Python-Enum-Darstellung

Python bietet in Version 3.4 und höher einen nativen Enum-Typ. Für frühere Versionen können Sie Bibliotheken von Drittanbietern wie enum34 oder aenum verwenden.

Verwenden von enum34 oder stdlib Enum:

from enum import Enum
Animal = Enum('Animal', 'ant bee cat dog')

Animal.ant  # <Animal.ant: 1>
Animal['ant']  # <Animal.ant: 1> (string lookup)
Animal.ant.name  # 'ant' (inverse lookup)
Nach dem Login kopieren

Verwenden von aenum:

from aenum import Enum
Animal = Enum('Animal', 'ant bee cat dog')

Animal.ant  # same as enum34
Animal['ant']  # same as enum34
Animal.ant.name  # same as enum34
Nach dem Login kopieren

Früher verwenden Python-Versionen:

Für frühere Python-Versionen können Sie eine benutzerdefinierte Funktion wie diese verwenden:

def enum(**enums):
    return type('Enum', (), enums)

Numbers = enum(ONE=1, TWO=2, THREE='three')
Numbers.ONE  # 1
Numbers.TWO  # 2
Numbers.THREE  # 'three'
Nach dem Login kopieren

Automatische Aufzählung:

Sie können für die automatische Aufzählung auch die folgende Funktion verwenden:

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)

Numbers = enum('ZERO', 'ONE', 'TWO')
Numbers.ZERO  # 0
Numbers.ONE  # 1
Nach dem Login kopieren

Umkehren Zuordnung:

Zur Unterstützung der Konvertierung von Enum-Werten zurück in Namen:

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    reverse = dict((value, key) for key, value in enums.iteritems())
    enums['reverse_mapping'] = reverse
    return type('Enum', (), enums)

Numbers = enum('ZERO', 'ONE', 'TWO')
Numbers.reverse_mapping['1']  # 'ONE'
Nach dem Login kopieren

Typing.Literal (MyPy):

In MyPy , können Sie Aufzählungen mit Literal definieren:

from typing import Literal

Animal = Literal['ant', 'bee', 'cat', 'dog']

def hello_animal(animal: Animal):
    print(f"hello {animal}")
Nach dem Login kopieren

Dadurch werden Zuweisungen von verhindert Nicht-Enum-Werte.

Das obige ist der detaillierte Inhalt vonWie kann ich Enums in Python effektiv nutzen und darstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage