0Pricing
Python Academy · Leçon

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 IntEnum se comportent comme des entiers et prennent en charge la comparaison de l'ordre et les calculs.
  • Les membres de Flag se combinent avec |, & et ~, et se testent avec in.
  • IntFlag combine 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

  1. La classe Enum
  2. IntEnum et Flag
  3. Les bases de NamedTuple
  4. typing.NamedTuple
← Retour à Python Academy