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

Wie kann ich Enums in Python effektiv darstellen?

DDD
Freigeben: 2024-12-13 09:30:14
Original
450 Leute haben es durchsucht

How Can I Effectively Represent Enums in Python?

Aufzählungen in Python darstellen

In Python 3.4 und höher können Aufzählungen nativ mithilfe der Enum-Klasse definiert werden. Um es zu verwenden, installieren Sie das enum34-Paket für Python-Versionen vor 3.4.

from enum import Enum

Animal = Enum('Animal', 'ant bee cat dog')

print(Animal.ant)  # Output: <Animal.ant: 1>
print(Animal['ant'])  # Output: <Animal.ant: 1>
print(Animal.ant.name)  # Output: 'ant'
Nach dem Login kopieren

Für fortgeschrittenere Enum-Techniken sollten Sie die Verwendung der aenum-Bibliothek in Betracht ziehen.

Alternative Ansätze für Pre-Python 3.4

In früheren Python-Versionen können Aufzählungen mithilfe einer benutzerdefinierten Enumeration emuliert werden Funktion:

def enum(**enums):
    return type('Enum', (), enums)
Nach dem Login kopieren

Verwendung:

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

Man kann die automatische Aufzählung auch unterstützen mit:

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

Verwendung:

Numbers = enum('ZERO', 'ONE', 'TWO')
print(Numbers.ZERO)  # Output: 0
print(Numbers.TWO)  # Output: 2
Nach dem Login kopieren

Alternativ können Sie zum Definieren typing.Literal aus Python 3.8 oder typing_extensions.Literal in früheren Versionen verwenden Aufzählungen:

from typing import Literal  # Python >= 3.8
from typing_extensions import Literal  # Python 2.7, 3.4-3.7

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

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

Das obige ist der detaillierte Inhalt vonWie kann ich Enums in Python effektiv 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage