Maison >développement back-end >Tutoriel Python >Définition et fonction de la classe d'énumération Python (exemple d'analyse)

Définition et fonction de la classe d'énumération Python (exemple d'analyse)

乌拉乌拉~
乌拉乌拉~original
2018-08-23 13:37:593740parcourir

Dans l'article suivant, nous découvrirons ce qu'est la classe d'énumération en python. Découvrez ce qu'est la classe d'énumération Python et quel rôle la classe d'énumération Python peut jouer dans la programmation Python.

Définition de l'énumération

Tout d'abord, pour définir une énumération, importez le module enum.
La définition de l'énumération utilise le mot-clé class et hérite de la classe Enum.

Remarque :

Lors de la définition d'une énumération, les noms de membres ne peuvent pas être répétés

Par défaut, les différentes valeurs de membres peuvent être identiques. Mais pour deux membres de même valeur, le nom du deuxième membre est considéré comme un alias du premier membre

S'il y a des membres de même valeur dans l'énumération, lors de l'obtention du membre de l'énumération par valeur, vous ne pouvez obtenir que le premier membre

Si vous souhaitez restreindre la définition d'une énumération, vous ne pouvez pas définir de membres avec la même valeur. Vous pouvez utiliser le décorateur @unique [pour importer le module unique]

Lorsque nous avons besoin de définir des constantes, une solution consiste à utiliser des variables majuscules pour les définir avec des entiers, comme le mois :

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12

L'avantage c'est que c'est simple, mais l'inconvénient c'est que le type est int et c'est toujours une variable.

Une meilleure approche consiste à définir un type de classe pour un tel type d'énumération, et chaque constante est alors une instance unique de la classe. Python fournit la classe Enum pour implémenter cette fonction :

from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

De cette façon, on obtient une classe d'énumération de type Month On peut directement utiliser Month.Jan pour référencer une constante, ou pour énumérer tous ses membres. :

for name, member in Month.__members__.items():
    print(name, '=>', member, ',', member.value)

L'attribut value est une constante int automatiquement attribuée au membre, en comptant à partir de 1 par défaut.

Si vous avez besoin d'un contrôle plus précis sur le type d'énumération, vous pouvez dériver une classe personnalisée à partir d'Enum :

from enum import Enum, unique

@unique
class Weekday(Enum):
    Sun = 0 # Sun的value被设定为0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6

Le décorateur @unique peut nous aider à vérifier qu'il n'y a pas de doublon valeurs.

Il existe plusieurs façons d'accéder à ces types d'énumération :

>>> day1 = Weekday.Mon
>>> print(day1)
Weekday.Mon
>>> print(Weekday.Tue)
Weekday.Tue
>>> print(Weekday['Tue'])
Weekday.Tue
>>> print(Weekday.Tue.value)
2
>>> print(day1 == Weekday.Mon)
True
>>> print(day1 == Weekday.Tue)
False
>>> print(Weekday(1))
Weekday.Mon
>>> print(day1 == Weekday(1))
True
>>> Weekday(7)
Traceback (most recent call last):
  ...
ValueError: 7 is not a valid Weekday
>>> for name, member in Weekday.__members__.items():
...     print(name, '=>', member)
...
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fri => Weekday.Fri
Sat => Weekday.Sat

On peut voir que la constante d'énumération peut être référencée par le nom du membre, ou la constante d'énumération peut être obtenue directement en fonction sur la valeur de la valeur.

Ce qui précède est tout le contenu de cet article. Cet article présente principalement les connaissances pertinentes de la classe d'énumération Python. J'espère que vous pourrez utiliser les informations pour comprendre le contenu ci-dessus. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.

Pour plus de connaissances connexes, veuillez visiter la colonne Tutoriel Python du site Web php chinois.

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!

Déclaration:
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