IntEnum et Flag
Utiliser des énumérations entières et à indicateurs
IntEnum et Flag est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Au-delà de l'énumération classique
Le module enum fournit des classes de base spécialisées. Les membres IntEnum se comportent comme des entiers, tandis que les membres de Flag peuvent être combinés avec des opérateurs bit à bit. Ces classes couvrent les situations où Enum classique est trop restrictive.
Une énumération classique n'est pas un entier
Un membre de Enum classique ne peut pas être utilisé indifféremment avec sa valeur entière. Le comparer à un nombre renvoie False.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum se compare comme un entier
Un membre de IntEnum est un entier. Il est donc égal à sa valeur numérique et prend en charge la comparaison de l'ordre.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum dans les calculs
Comme les membres sont de vrais entiers, vous pouvez les utiliser dans des calculs et pour l'indexation. Utilisez cette solution lorsqu'une valeur doit réellement être compatible avec du code numérique.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)Trier des membres IntEnum
Comme IntEnum prend en charge la comparaison de l'ordre, une liste de membres est triée par valeur sans fonction clé supplémentaire.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
for p in sorted([Priority.HIGH, Priority.LOW, Priority.MEDIUM]):
print(p.name)Flag pour les options combinables
Une énumération Flag est destinée aux valeurs que vous combinez. Attribuez des puissances de deux afin que chaque membre occupe son propre bit.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Combiner des drapeaux avec |
Utilisez l'opérateur OR bit à bit | pour combiner plusieurs drapeaux en une seule valeur composite.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Tester l'appartenance avec in
Vérifiez si un drapeau est défini avec l'opérateur in, qui effectue le test bit à bit à votre place.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(Permission.READ in access)
print(Permission.EXECUTE in access)Intersection et suppression
Combinez des drapeaux avec & (AND) pour trouver les bits communs, et supprimez un drapeau avec & et son complément ~.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
still = access & ~Permission.WRITE
print(still)IntFlag pour les drapeaux entiers
IntFlag réunit les deux idées : des drapeaux combinables qui se comportent également comme de simples entiers, ce qui est utile pour communiquer avec des API en C ou avec des masques de bits stockés sous forme de nombres.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Parcourir un drapeau combiné
Parcourir une valeur Flag combinée renvoie chaque drapeau individuel qu'elle contient, ce qui est pratique pour répertorier les options actives.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.EXECUTE
for p in access:
print(p.name)Vérification rapide
Pourquoi choisir une énumération Flag plutôt qu'une énumération classique ?
Récapitulatif
Vous avez appris à utiliser les énumérations entières et les énumérations de drapeaux.
- Les membres
IntEnumse comportent comme des entiers et prennent en charge la comparaison de l'ordre et les calculs. - Les membres de
Flagse combinent avec|,&et~, et se testent avecin. IntFlagcombine ces deux comportements.- Utilisez des puissances de deux pour les valeurs des drapeaux.
Questions Fréquemment Posées
La leçon « IntEnum et Flag » est-elle gratuite ?
Oui — le texte complet de « IntEnum et Flag » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « IntEnum et Flag » ?
Utiliser des énumérations entières et à indicateurs Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « IntEnum et Flag » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- La classe Enum
- IntEnum et Flag
- Les bases de NamedTuple
- typing.NamedTuple