Utilisation des classes d'énumération

Dans le développement actuel, nous ne pouvons pas nous passer de définir des constantes. Lorsque nous devons définir des constantes, une solution consiste à utiliser des variables majuscules pour les définir avec des nombres entiers, comme les mois :

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

Bien sûr, c'est simple et rapide, mais l'inconvénient est que le type est int et reste une variable.

Y a-t-il un bon moyen ?

À ce stade, nous définissons un type de classe, et chaque constante est la seule instance de la classe. Il se trouve que Python fournit la classe Enum pour implémenter cette fonction comme suit :

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
# 遍历枚举类型
for name, member in Month.__members__.items():
    print(name, '---------', member, '----------', member.value)
# 直接引用一个常量
print('\n', Month.Jan)

Le résultat de sortie est le suivant :

a41b1b020149ba50432eae7d4913fa0.png

On voit que l'on peut directement utiliser Enum pour définir une classe d'énumération. Dans le code ci-dessus, nous créons un type d'énumération Month à propos du mois. Ce qu'il faut noter ici, ce sont les paramètres de construction Month représente le nom de la classe d'énumération et le deuxième paramètre de tuple représente la valeur de l'énumération. la classe énumération ; bien sûr, la classe énumération parcourt tous ses membres via la méthode __members__. Une chose à noter est que member.value est une constante de type int automatiquement attribuée au membre, en commençant par 1 par défaut. De plus, les membres d'Enum sont tous des singletons et ne peuvent pas être instanciés ou modifiés

Formation continue
  • Recommandations de cours
  • Téléchargement du didacticiel