Nouveau dans Python 3.4.0 (2) --enum

Entrée d'hier présente les nouvelles fonctionnalités de Python 3.4 qui ont démarré. Aujourd'hui, c'est Enum.

C'est une fonctionnalité que j'ai toujours voulue, donc j'en suis content. Dans le cas de Python, Enum n'est pas un type mais une classe, et est une image définie comme une variable de classe d'une classe qui hérite d'une paire nom / valeur.

À titre d'exemple, utilisez la combinaison de cartes présentée dans Enumeration (Wikipedia). .. D'abord de la définition.

from enum import Enum

class Cardsuit(Enum):
    CLUBS = 1
    DIAMONDS = 2
    HEARTS = 3
    SPADES = 4

Et lors de son utilisation, instanciez la valeur en tant qu'argument ou récupérez l'attribut de classe en utilisant le nom comme clé.

#La même valeur est attribuée à tous les éléments suivants
card0 = Cardsuit(2)
card1 = Cardsuit['DIAMONDS']
card2 = Cardsuit.DIAMONDS

#Lorsqu'il est imprimé normalement, il est sorti dans le format final
print(card0, card1, card2) # -> Cardsuit.DIAMONDS Cardsuit.DIAMONDS Cardsuit.DIAMONDS

#Le nom et la valeur peuvent être récupérés séparément
print(card0.name, card0.value) # -> DIAMONDS 2

De plus, Enum of Python est --Assignez différentes valeurs au même nom ... NG --Assignez la même valeur à un nom différent ... OK

Cependant, si vous utilisez Enum.unique, vous pouvez également NG le second.

from enum import Enum

#C'est acceptable
class Cardsuit(Enum):
    CLUBS = 1
    DIAMONDS = 2
    HEARTS = 3
    SPADES = 4
    ALT_SPADES = 4

#C'est NG
@unique
class Cardsuit(Enum):
    CLUBS = 1
    DIAMONDS = 2
    HEARTS = 3
    SPADES = 4
    ALT_SPADES = 4

J'ai été un peu surpris qu'Enum soit une classe, mais c'est peut-être le cas. Par exemple, la définition du code d'erreur est une paire nom / valeur, et des méthodes y sont ajoutées si nécessaire. Je me demande si cela deviendra plus clair si je fais un codage un peu plus réel.

Recommended Posts

Nouveau dans Python 3.4.0 (2) --enum
Quoi de neuf dans Python 3.5
Quoi de neuf dans Python 3.6
Nouveautés de Python 3.10 (Résumé)
Nouveautés de Python 3.9 (Résumé)
Nouveau dans les dictionnaires de fusion python3.9
Nouveau dans Python 3.4.0 (1) --pathlib
Quadtree en Python --2
Python en optimisation
CURL en Python
Nouveautés de Python 3.9 (2) - Tri des graphes non circulés dirigés en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Python: Enum synthétique
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quoi de neuf dans datetime qui est un peu plus utile dans Python 3
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python