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

Wie kann ich Enums in Python effektiv darstellen?

DDD
DDDOriginal
2024-12-13 09:30:14451Durchsuche

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'

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)

Verwendung:

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

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)

Verwendung:

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

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

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!

Stellungnahme:
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