Enum-luokka
Määritä nimettyjä vakioryhmiä
Enum-luokka on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Miksi enum
enum eli luettelo on joukko yhteenkuuluvia nimettyjä vakioarvoja. Sen sijaan että koodiin ripoteltaisiin taikamerkkijonoja tai -lukuja, jokaiselle arvolle annetaan selkeä nimi.
- Itsensä dokumentoiva koodi.
- Suojaa kirjoitusvirheiltä.
- Kiinteä ja ennalta tunnettu joukko vaihtoehtoja.
Enumin määrittäminen
Perikää Enum ja luetelkaa jäsenet muodossa NAME = value. Tapana on käyttää jäsenten nimissä isoja kirjaimia.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED)name ja value
Jokaisella enum-jäsenellä on .name eli tunniste ja .value eli määritetty arvo.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
c = Color.GREEN
print(c.name)
print(c.value)Jäsenet ovat singleton-olioita
Kukin jäsen on yksilöllinen singleton-olio. Vertailkaa jäseniä operaattorilla is tai ==; sama jäsen on aina täsmälleen sama olio.
from enum import Enum
class Color(Enum):
RED = 1
BLUE = 2
print(Color.RED is Color.RED)
print(Color.RED == Color.BLUE)Haku arvon perusteella
Kutsukaa enum-luokkaa arvolla saadaksenne sitä vastaavan jäsenen. Tuntematon arvo nostaa poikkeuksen ValueError.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
print(Color(2))
try:
Color(99)
except ValueError as e:
print('Bad value:', e)Haku nimen perusteella
Hakekaa jäsen nimen perusteella käyttämällä hakasulkeita ja jäsenen nimimerkkijonoa. Tämä on kätevää, kun nimet luetaan määrityksistä tai käyttäjän syötteestä.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
print(Color['GREEN'])Jäsenten läpikäynti
Enum on iteroitava. Silmukka tuottaa jokaisen jäsenen määrittelyjärjestyksessä, mikä sopii erinomaisesti valikoiden rakentamiseen tai vaihtoehtojen kelvollisuuden tarkistamiseen.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
for c in Color:
print(c.name, c.value)Merkkijonoarvot
Enumin arvot eivät rajoitu kokonaislukuihin. Merkkijonot ovat yleisiä erityisesti arvoille, jotka serialisoidaan tai tallennetaan.
from enum import Enum
class Status(Enum):
ACTIVE = 'active'
PAUSED = 'paused'
CLOSED = 'closed'
print(Status.PAUSED.value)
print(Status('closed'))auto() arvoille
Kun tarkalla numerolla ei ole merkitystä, käyttäkää auto()-funktiota arvojen määrittämiseen automaattisesti. Arvot alkavat luvusta 1 ja kasvavat siitä ylöspäin.
from enum import Enum, auto
class Direction(Enum):
NORTH = auto()
SOUTH = auto()
EAST = auto()
WEST = auto()
for d in Direction:
print(d.name, d.value)Enumit funktioissa
Enumien käyttäminen funktion parametreina tekee tarkoituksesta selkeän ja suojaa virheellisiltä syötteiltä. Vertailkaa jäseniä suoraan logiikan sisällä.
from enum import Enum
class Light(Enum):
RED = 1
YELLOW = 2
GREEN = 3
def can_go(light):
return light is Light.GREEN
print(can_go(Light.GREEN))
print(can_go(Light.RED))Jäsenet sanakirjassa
Enum-jäsenet ovat hajautettavia, joten ne toimivat sanakirjan avaimina. Näin kuhunkin nimettyyn vakioon on helppo liittää tietoja.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
hex_codes = {Color.RED: '#ff0000', Color.GREEN: '#00ff00'}
print(hex_codes[Color.RED])Pikatarkistus
Miten kahden enum-jäsenen identiteetti tarkistetaan oikein?
Kertaus
Opitte määrittämään nimettyjä vakioryhmiä Enum-luokan avulla.
- Jäsenillä on attribuutit
.nameja.value. - Hakekaa arvoa käyttäen
Color(v)ja nimeä käyttäenColor['NAME']. - Enumit ovat iteroitavia ja jäsenet singleton-olioita.
- Käyttäkää
auto()-funktiota, kun tarkalla arvolla ei ole merkitystä.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”Enum-luokka” ilmainen?
Kyllä – oppitunnin ”Enum-luokka” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Enum-luokka”?
Määritä nimettyjä vakioryhmiä Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Enum-luokka”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.