Kenttien luominen käynnistysmetodissa

Luokat voivat sisältää myös kenttiä, joita ei anneta käynnistysmetodin parametrina. On kuitenkin hyvä ohjelmointitapa alustaa myös nämä kentät käynnistysmetodissa. Tarkastellaan luokkaa Laboratorio, jossa kaksi kenttää annetaan käynnistysmetodin parametreina ja yksi kenttä alustetaan käynnistysmetodissa:

class Laboratorio:
    def __init__(self, nimi, kapasiteetti):
        # nimi: laboratorion nimi merkkijonona
        # kapasiteetti: laboratorioon mahtuva opiskelijamäärä (kokonaisluku)
        self.nimi = nimi
        self.kapasiteetti = kapasiteetti
        # Luodaan myös kenttä "opiskelijoita" (kokonaisluku), jonka arvo on alussa 0
        self.opiskelijoita = 0
    
    def lisaa_opiskelija(self):
        # Mahtuuko labraan vielä?
        if self.opiskelijoita < self.kapasiteetti:
            # Kasvatetaan"opiskelijoita"-kenttää yhdellä
            self.opiskelijoita += 1
            print(f"Opiskelijoita nyt: {self.opiskelijoita}")
        else:
            print("Labra on täynnä!")

Kun luokan toteutusta testataan näin:

labra1 = Laboratorio("SEM", 3)
for i in range(4):
    labra1.lisaa_opiskelija()

saadaan tulokseksi

Opiskelijoita nyt: 1
Opiskelijoita nyt: 2
Opiskelijoita nyt: 3
Labra on täynnä!

Jos haluat päästää opiskelijat pois labrasta, voit lisätä luokan toteutukseen metodin vapauta_opiskelija, joka vähentää labrasta yhden opiskelijan.