Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla
Ennen tallennusta suositellaan ottamaan kopio muokkausruudusta (ctrl-a -> ctrl-c)
Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.
Python oliot
Siirry navigaatioon
Siirry hakuun
Yleistä[muokkaa]
Pääsivu: Python
Olio-ohjelmointi. Luokka on rakenteinen tietotyyppi. Olio luodaan luokassa määritellyn ohjeen mukaan eli olio on luokan ilmentymä.
- Esimerkki:
- Korvaaminen, monimuotoisuus, periytyminen, piilotus.
Rakenne[muokkaa]
1. luokan nimi 2. attribuutit eli jäsenmuuttujat 3. metodit eli jäsenfunktiot
Luokka (class)[muokkaa]
- luokka eli olion tyyppi, olion rakennusohje
- rakennusohje kirjoitetaan koodina
- ajettaessa ensimmäisen kerran luodaan yksi rakenne per luokka JA yksi rakenne per olio, jonka jälkeen rakenteita eli oloita tarvittava määrä
class Luokannimi:
Olio (object)[muokkaa]
- olio sisältää jäsenmuuttujia (attribuutteja, attribute, kenttä, field) ja jäsenfunktioita (metodeja, method, operaatio, operation)
- olio voi kutsua toisen olion jäsenfunktioita
- oliot sijaitsee tietokoneen muistissa ja poistettaessa vapauttaa muistia
uusiolio = Luokannimi() # luodaan uusiolio joka perustuu Luokannimeen. Tämä on yläluokka. uusiolionimi = Luokannimi(jokuarvo):
Olioiden käyttäminen[muokkaa]
olionnimi.jasenfunktio(jokuarvo) # asetetaan oliolle nimeltä olionimi jokuarvo sen metodissa jasenfunktio
- arvo voidaan hakea esimerkiksi input-käskyllä tai for-silmukalla listasta. Tämän jälkeen arvo esimerkiksi asetetaan kyseiseen olioon tai luodaan uusi olio.
muuttuja1 = input("Anna nimi") syote = input("Anna syote") uusiolio = Luokannimi(syote) # luodaan uusi luokka muuttuja1.metodinimi(uusiolio)
Listat[muokkaa]
- listoja voidaan käyttää olioiden kanssa eri tarkoituksiin. lista = []
- listaa voidaan kuljettaa esimerkiksi funktioissa def funktionimi(lista):
- listaan lisätään esimerkiksi aliohjelmassa lista.append(uusiolio) # lisää uusiolion listaan
- listaan lisätään esimerkiksi luokkamäärittelyssä self.lista.append(muuttuja1)
# haku listasta for i in lista: if i.jokuattribuutti == 0: # haetaan lisasta jokuattribuuttien arvoista nolla-arvoa return(i) print("Ei löytynyt") return(None)
Jäsenmuuttuja l. attribuutti(member variable)[muokkaa]
- olion jäsenmuuttuja eli self.muuttuja1 = jokuarvo
- alustaja (initializer) __init__ eli kaksi alaviivaa kummalakin puolen. Tämä suoritetaan jokaista oliota luotaessa, ei siis tarvitse kutsua erikseen. Oliota luotaessa voidaan lähettää tähän arvoja juuri tätä kyseistä oliota koskien.
- jäsenfunktiossa self liittyy kyseiseen jäsenfunktioon. Eli toinen self taas toiseen jäsenfunktioon
- esim. def jasenfuntio1(self, muuttuja1)
- esim. self.muuttuja2 = 0
# Esimerkki class Luokannimi: def __init__(self): # voidaan jättää myös pois self.muuttuja2 = True # jos ei käytetä __init__, niin silloin rivi kirjoitetaan: muuttuja2 = True self.muuttuja3 = 0 def jasenfunktio1(self, muuttuja1): self.muuttuja2 = muuttuja1 # olion luominen ja käyttäminen uusiolio = Luokannimi() # luodaan UUSI olio print(uusiolio.muuttuja2) # tulostaa oletusarvon True uusiolio.jasenfunktio1(False) print(uusiolio.muuttuja2) # tulostaa muutetun arvon False
# alustus annetulla todellisella parametrilla class Luokannimi(): def __init__(self,muuttuja1): self.muuttuja2 = muuttuja1
uusiolio = Luokannimi(10) # luodaan uusi olio parametrilla 10 print(uusiolio.muuttuja2) # tulostaa arvon 10
Jäsenfunktio l. metodi (member function)[muokkaa]
- luokan aliohjelma eli def...
- ensimmäinen parametri viittaa kutsuttavaan olioon. Eli suluissa ensimmäinen. Voi olla self tai joku itse keksitty.
class Luokannimi: def jasenfunktio1(self,muuttuja1): print(muuttuja1) def jasenfunktio2(self): print("Teksti2")
- Jäsenfunktion kutsuminen:
uusiolio = Luokannimi() uusiolio.jasenfunktio2() # tulostaa Teksti2 uusiolio.jasenfunktio1("Teksti1") # tulostaa Teksti1
Periytyminen (inheritance)[muokkaa]
- Luokka (alaluokka, subclass) kopioi jonkun toisen luokan (yläluokka, superclass) metodit ja attribuutit. Alaluokkaan voi lisätä ominaisuuksia yläluokan metodien ja attribuuttien lisäksi.
- Yläluokan attribuutteihin viitataan kuten alaluokan omiin.
class Alaluokka(Yläluokka):
Korvaaminen (overriding)[muokkaa]
- Kirjoitetaan samalla tavoin kuin yläluokan metodi, mutta esimerkiksi eri metodi. Samalla tavoin tarkoittaa että kun metodi tai attribuutti kirjoitetaan koodiin samalla tavoin kuin yläluokassa, niin alaluokan attribuuttien arvot tai metodin toisenlainen käyttäytyminen on se mitä kyseissä oliossa käytetään tältä osin.
- VAATII SELVENNYSTÄ MITEN TOIMII