Python Academy · Oppitunti

Enum-luokka

Määritä nimettyjä vakioryhmiä

Oppitunti 1/413 vaihetta

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 .name ja .value.
  • Hakekaa arvoa käyttäen Color(v) ja nimeä käyttäen Color['NAME'].
  • Enumit ovat iteroitavia ja jäsenet singleton-olioita.
  • Käyttäkää auto()-funktiota, kun tarkalla arvolla ei ole merkitystä.
Aloita maksutta

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.

Kaikki tämän kurssin oppitunnit

  1. Enum-luokka
  2. IntEnum ja Flag
  3. NamedTuple-perusteet
  4. typing.NamedTuple
← Takaisin: Python Academy