Klassi eksemplarid
Eelmine
Järgmine

Klassi eksemplarid

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

  1. jalgrattaobjekt, millega tehteid teeme
  2. mitu vändapööret teeme.
Olgu meil esimene muutuja 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
                                                             ))
Eelmine
Järgmine
Esileht