IntEnum og Flag
Brug heltals- og flag-enums
IntEnum og Flag er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
Ud over almindelig Enum
Modulet enum leveres med specialiserede basisklasser. Medlemmer af IntEnum opfører sig som heltal, og medlemmer af Flag kan kombineres med bitvise operatorer. De dækker tilfælde, hvor almindelig Enum er for begrænset.
Almindelig Enum er ikke en int
Et medlem af en almindelig Enum kan ikke bruges ombytteligt med sin heltalsværdi. En sammenligning med et tal returnerer False.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum sammenlignes som int
Et medlem af IntEnum er et heltal, så det sammenlignes som lig med sin talværdi og understøtter ordning.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum i aritmetik
Da medlemmerne er rigtige heltal, kan du bruge dem i matematiske beregninger og ved indeksering. Brug dette, når en værdi virkelig skal kunne fungere sammen med numerisk kode.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)Sortere IntEnum-medlemmer
Da IntEnum understøtter ordning, sorteres en liste med medlemmer efter værdi uden en ekstra nøglefunktion.
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 til kombinerbare indstillinger
En Flag-enumeration er beregnet til værdier, du kombinerer. Tildel potenser af to, så hvert medlem optager sin egen bit.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Kombinere Flag med |
Brug den bitvise OR-operator | til at kombinere flag til én samlet værdi.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Teste medlemskab med in
Kontrollér, om et flag er sat, ved hjælp af operatoren in, som udfører den bitvise test for dig.
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)Snit og fjernelse
Kombiner flag med & (AND) for at finde fælles bit, og fjern et flag med & sammen med komplementet ~.
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 til heltalsflag
IntFlag kombinerer begge idéer: kombinerbare flag, der også opfører sig som almindelige heltal. Det er nyttigt ved kommunikation med C-API'er eller bitmasker, der er gemt som tal.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Gennemløbe et kombineret Flag
Hvis du gennemløber en kombineret Flag-værdi, får du hvert enkelt flag, den indeholder, hvilket er praktisk til at vise aktive indstillinger.
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)Hurtigt tjek
Hvorfor vil du vælge en Flag-enumeration frem for en almindelig Enum?
Opsummering
Du har lært om heltals- og flag-enumerationer.
- Medlemmer af
IntEnumopfører sig som heltal og understøtter ordning og aritmetik. - Medlemmer af
Flagkombineres med|,&og~og testes medin. IntFlagkombinerer begge egenskaber.- Brug potenser af to til flagværdier.
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “IntEnum og Flag” gratis?
Ja — hele teksten til “IntEnum og Flag” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “IntEnum og Flag”?
Brug heltals- og flag-enums Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “IntEnum og Flag”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Enum-klassen
- IntEnum og Flag
- Grundlæggende om NamedTuple
- typing.NamedTuple