CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, 03.06.2019-31.08.2019
Kurssiasetusten perusteella kurssi on päättynyt 31.08.2019 Etsi kursseja: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Lyhyt opas Python-ohjelmointiin
Olio-ohjelmointia 2
Luokkamuuttujat
Edellisen luvun esimerkissä Molekyyli-luokalla oli kaksi kenttää, kaava ja moolimassa. Jokaisella Molekyyli-luokan pohjalta luodulla oliolla on omat arvonsa näissä kentissä. Joskus voi olla kuitenkin tarpeen säilyttää tietoa, joka on kaikille luokan olioille yhteistä. Silloin voidaan hyödyntää luokkamuuttujia.
Lisätään Molekyyli-luokkaan luokkamuuttuja maara (määrä), jolla pidetään kirjaa Molekyyli-luokkaan perustuvien olioiden määrästä:
class Molekyyli: maara = 0 def __init__(self, kaava, moolimassa): Molekyyli.maara += 1 self.kaava = kaava self.moolimassa = moolimassa def laske_ainemaara(self, massa): return massa / self.moolimassa metaani = Molekyyli("CH4", 16.04) etaani = Molekyyli("C2H6", 30.07) propaani = Molekyyli("C3H8", 44.10) print("Olet luonut {} molekyyliä".format(Molekyyli.maara))
tulostaa
Olet luonut 3 molekyyliä
Luokkamuuttuja maara määritellään siis luokan metodien ulkopuolella. Se saa arvon 0, kun ohjelma käynnistyy. Kun luokan pohjalta luodaan uusi olio, käynnistysmetodi kasvattaa luokkamuuttujan arvoa yhdellä. Huomaa, että luokkamuuttujaan on viitattava luokan nimen avulla (Molekyyli.maara) sekä luokan metodien sisällä että luokkamäärittelyn ulkopuolella.
Olioiden säilöminen tietorakenteisiin
Oliot ovat jo itsessään kätevä tapa tietojen säilömiseksi. Meno muuttuu kuitenkin vielä jännittävämmäksi kun olioita aletaan tunkea tietorakenteisiin:
class Molekyyli: maara = 0 def __init__(self, kaava, moolimassa): Molekyyli.maara += 1 self.kaava = kaava self.moolimassa = moolimassa def laske_ainemaara(self, massa): return massa / self.moolimassa metaani = Molekyyli("CH4", 16.04) etaani = Molekyyli("C2H6", 30.07) propaani = Molekyyli("C3H8", 44.10) butaani = Molekyyli("C4H10", 58.12) hiilivedyt_lista = [metaani, etaani, propaani, butaani] print("Olet luonut {} molekyyliä:".format(Molekyyli.maara)) for alkio in hiilivedyt_lista: print(alkio.kaava)
tulostaa
Olet luonut 4 molekyyliä: CH4 C2H6 C3H8 C4H10
Lista olioita on erittäin kätevä tapa korvata aiemmin kurssilla käytetyt rakenteet, joissa listojen sisään on tungettu toisia listoja. Olioiden avulla tiedot on helpompi säilöä ja niihin on helpompi päästä käsiksi.