Klassi on võimalik kasutada nüüd millekski kasulikuks. Kõigepealt loome klassi eksemplarid - kirjeldame ära konkreetsed jalgrattad, mille kohta meil on vaja ülesandeid lahendada.
Teeme seda jälle interaktiivses kasutusmoodis.
>>>
import kulgurid>>>
a = kulgurid.Jalgratas()>>>
b = kulgurid.Jalgratas()>>>
c = kulgurid.Jalgratas()>>>
a.omanik = 'Mikk'>>>
a.esimene = 46>>>
a.tagumine = 14>>>
a.rattad = 27>>>
b.omanik = 'Mann'>>>
b.esimene = 42>>>
b.tagumine = 16>>>
b.rattad = 28>>>
c.omanik = 'Juku'>>>
c.esimene = 38>>>
c.tagumine = 22>>>
c.rattad = 26
Defineerime nüüd funktsiooni, mis näitab, kui palju keegi edasi vändates liigub:
Funktsioon liigub()
ei tagasta midagi, ainult
prindib välja, kes kui palju väntas ja kui palju edasi liikus.
Olgu meil funktsiooni parameetriteks
kes
ja teine
ajab_ringi
. Muutuja kes
väärtuseks tohib olla ainult klassi Jalgratas
eksemplar.
Funktsiooni liigub()
sisu saame väljendada ühe
print
operaatoriga. Kirjutame sinna välja
trükitava lause koos lünkadega, mille täidame erinevate muutujate
väärtustega, millest osad arvutame kohapeal.
print "%s väntas %d korda ja liikus edasi %.2f meetrit."
Esimest lünka tähistav %s täidetakse jalgratta omaniku nimega.
Jalgratta omaniku ja kõik muud defineeritud tunnused saame jalgratta
objektiga kaasa. Esimese lünga täidab
kes.omanik
.
Teine lünk täidekse täisarvuga, milleks on mitu korda
vändati. Täisarvu kohta hoiab %d. Muutuja on
ajab_ringi
.
Kolmas lünk täidetakse reaalarvuga, mis tähistab läbitud maad. See
saadakse jalgratta objekti kes
meetodi
teekond
abil, mille argumendiks on
väntamiskordade arv ajab_ringi
.
kes.teekond(ajab_ringi)
Meil ei ole vaja kasutada kogu täpsust, mida teekonna meetod
pakub. Sellepärast rakendame sellele ümardamisfunktsiooni
round
, andes täpsuse sajandikega (kaks kohta
peale koma).
round(kes.teekond(ajab_ringi),2)
Kui me jätaksime lünka tähistama ainult %f, siis saaksime vastuseks
teksti, kus on küll välja arvutatud täpsusega kaks kohta peale koma,
kuid sellele järgneks veel hulk nulle. Selleks, et lüngas oleks ka
märgitud vajadus väljastada kaks kohta pärast koma, tähistame selle
%.2f
.
Nüüd on meil funktsioon töövalmis, kuid ta kirjutab igal juhul, et
kes.omanik
väntas
ajab_ringi
korda, ka siis kui
ajab_ringi = 1
. Selleks märgime veel ühe lünga,
osutades, et see tuleb täita muutujaga
k
. Muutuja k
seame
sõltuvusse muutuja ajab_ringi
väärtusest:
if ajab_ringi == 1: k = "kord" else: k = "korda"
Koos dokumendikirjega saame funktsiooni liigub
definitsiooniks:
def liigub(kes, ajab_ringi=1): ''' Arvutab, kes kui palju vändates edasi liigub. kes olgu klassi kulgurid.Jalgratas() eksemplar, ajab_ringi int. Vaikimisi väärtus on sellel 1. ''' if ajab_ringi == 1: k = "kord" else: k = "korda" print "%s väntas %d %s ja liikus edasi %.2f meetrit." % (kes.omanik, ajab_ringi, k, round( kes.teekond( ajab_ringi),2 ))