Maison > développement back-end > Tutoriel Python > Comment puis-je représenter efficacement les énumérations en Python ?

Comment puis-je représenter efficacement les énumérations en Python ?

DDD
Libérer: 2024-12-13 09:30:14
original
439 Les gens l'ont consulté

How Can I Effectively Represent Enums in Python?

Représenter des énumérations en Python

Dans Python 3.4 et versions ultérieures, les énumérations peuvent être définies de manière native à l'aide de la classe Enum. Pour l'utiliser, installez le package enum34 pour les versions Python antérieures à 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'
Copier après la connexion

Pour des techniques d'énumération plus avancées, pensez à utiliser la bibliothèque aenum.

Approches alternatives pour pré-Python 3.4

Dans les versions antérieures de Python, les énumérations peuvent être émulées à l'aide d'un fonction :

def enum(**enums):
    return type('Enum', (), enums)
Copier après la connexion

Utilisation :

Numbers = enum(ONE=1, TWO=2, THREE='three')
print(Numbers.ONE)  # Output: 1
print(Numbers.THREE)  # Output: 'three'
Copier après la connexion

On peut également prendre en charge l'énumération automatique avec :

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)
Copier après la connexion

Utilisation :

Numbers = enum('ZERO', 'ONE', 'TWO')
print(Numbers.ZERO)  # Output: 0
print(Numbers.TWO)  # Output: 2
Copier après la connexion

Vous pouvez également utiliser typing.Literal à partir de Python 3.8 ou typing_extensions.Literal dans les versions antérieures pour définir énumérations :

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}")
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal