IntEnum och Flag
Använd heltals- och flaggenumereringar
IntEnum och Flag är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Bortom vanlig Enum
Modulen enum levereras med specialiserade basklasser. Medlemmar i IntEnum fungerar som heltal, och medlemmar i Flag kan kombineras med bitvisa operatorer. De täcker fall där vanlig Enum är för begränsad.
Vanlig Enum är inte en int
En medlem i en vanlig Enum kan inte användas omväxlande med sitt heltalsvärde. Om Ni jämför den med ett tal blir resultatet False.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum jämförs som int
En medlem i IntEnum är ett heltal, så den jämförs som lika med sitt numeriska värde och stöder ordning.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum i aritmetik
Eftersom medlemmarna är riktiga heltal kan Ni använda dem i beräkningar och indexering. Använd detta när ett värde verkligen behöver fungera tillsammans med numerisk kod.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)Sortera IntEnum-medlemmar
Eftersom IntEnum stöder ordning sorteras en lista med medlemmar efter värde utan någon extra nyckelfunktion.
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 för kombinerbara alternativ
En Flag-enum är avsedd för värden som Ni kombinerar. Tilldela tvåpotenser så att varje medlem använder sin egen bit.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Kombinera flaggor med |
Använd den bitvisa OR-operatorn | för att kombinera flaggor till ett enda sammansatt värde.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Kontrollera medlemskap med in
Kontrollera om en flagga är satt med operatorn in, som utför det bitvisa testet åt Er.
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)Snitt och borttagning
Kombinera flaggor med & (AND) för att hitta gemensamma bitar och ta bort en flagga med & mot 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 för heltalsflaggor
IntFlag kombinerar båda idéerna: kombinerbara flaggor som också fungerar som vanliga heltal. Det är användbart vid gränssnitt mot C-API:er eller bitmasker som lagras som tal.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Iterera över en kombinerad Flag
Om Ni itererar över ett kombinerat Flag-värde får Ni varje enskild flagga som det innehåller, vilket är praktiskt när Ni vill lista aktiva alternativ.
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)Snabb kontroll
Varför skulle Ni välja en Flag-enum i stället för en vanlig Enum?
Sammanfattning
Ni har lärt Er om heltals- och flagg-enum.
- Medlemmar i
IntEnumfungerar som heltal och stöder ordning och aritmetik. - Medlemmar i
Flagkombineras med|,&och~och testas medin. IntFlagkombinerar båda beteendena.- Använd tvåpotenser för flaggvärden.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”IntEnum och Flag” gratis?
Ja – hela texten till ”IntEnum och Flag” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”IntEnum och Flag”?
Använd heltals- och flaggenumereringar Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”IntEnum och Flag”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Enum-klassen
- IntEnum och Flag
- Grunderna i NamedTuple
- typing.NamedTuple