Maison > développement back-end > Tutoriel Python > qu'est-ce que l'énumération python

qu'est-ce que l'énumération python

silencement
Libérer: 2019-06-22 10:38:06
original
3170 Les gens l'ont consulté

qu'est-ce que l'énumération python

Le type d'énumération peut être considéré comme une étiquette ou une collection de constantes, généralement utilisées pour représenter certaines collections limitées, telles que la semaine, le mois, le statut, etc. Il n'y a pas de type d'énumération spécial dans les types natifs de Python (types intégrés), mais nous pouvons l'implémenter via de nombreuses méthodes, telles que des dictionnaires, des classes, etc. :

WEEKDAY = {
  'MON': 1,
  'TUS': 2,
  'WEN': 3,
  'THU': 4,
  'FRI': 5
  }
  class Color:
  RED = 0
  GREEN = 1
  BLUE = 2
Copier après la connexion

Les deux méthodes ci-dessus peuvent être considérées comme Dans l'implémentation de types d'énumération simples, il n'y a aucun problème si ces variables d'énumération ne sont utilisées que dans la portée locale, mais le problème est qu'elles sont toutes mutables, ce qui signifie qu'elles peuvent être modifiées à d'autres endroits et affecter l'implémentation. use:

WEEKDAY['MON'] = WEEKDAY['FRI']
  print(WEEKDAY)
  {'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4}
  通过类定义的枚举甚至可以实例化,变得不伦不类:
  c = Color()
  print(c.RED)
  Color.RED = 2
  print(c.RED)
  0
  2
Copier après la connexion

Bien sûr, vous pouvez également utiliser des types immuables (immuables), tels que des tuples, mais cela perd l'intention originale du type énumération et dégrade l'étiquette en une variable dénuée de sens :

COLOR = ('R', 'G', 'B')
  print(COLOR[0], COLOR[1], COLOR[2])
  R G B
Copier après la connexion

Afin de fournir une meilleure solution, Python a ajouté la bibliothèque standard enum dans la version 3.4 via PEP 435. Les versions antérieures à 3.4 peuvent également télécharger des bibliothèques compatibles et prises en charge via pip install enum. enum fournit trois outils : Enum/IntEnum/unique, et leur utilisation est très simple. Vous pouvez définir des types d'énumération en héritant d'Enum/IntEnum et limite les membres de l'énumération à (ou peut être converti en) des types entiers. être utilisé comme Le décorateur restreint la valeur du membre de l'énumération à ne pas être répétable :

from enum import Enum, IntEnum, unique 
     try:
  @unique
  class WEEKDAY(Enum):
  MON = 1
  TUS = 2
  WEN = 3
  THU = 4
  FRI = 1
  except ValueError as e:
  print(e)
  duplicate values found in : FRI -> MON
  try:
  class Color(IntEnum):
  RED = 0
  GREEN = 1
  BLUE = 'b'
  except ValueError as e:
  print(e)
  invalid literal for int() with base 10: 'b'
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!

Étiquettes associées:
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