CHEM-A2600 - Kemiantekniikan ohjelmointikurssi, Luento-opetus, 5.9.2022-2.12.2022
This course space end date is set to 02.12.2022 Search Courses: CHEM-A2600
Python-oppimateriaali (CHEM-A2600)
Krav för slutförande
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): # Kasvatetaan luokkamuuttujan maara arvoa # Luokkamuuttujaan on viitattava luokan nimen avulla 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(f"Olet luonut {Molekyyli.maara} molekyyliä")
tulostaa
Olet luonut 3 molekyyliä
Luokkamuuttuja maara määritellään siis luokan metodien ulkopuolella. Se saa arvon 0, kun ohjelma käynnistyy (rivi "maara = 0" luokan määrittelyn alussa). Kun luokan pohjalta luodaan uusi olio, käynnistysmetodi kasvattaa luokkamuuttujan arvoa yhdellä (Molekyyli.maara += 1). Huomaa, että luokkamuuttujaan on viitattava luokan nimen avulla (Molekyyli.maara) sekä luokan metodien sisällä että luokkamäärittelyn ulkopuolella.
Tehtävä 6.7.1