Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Pythonissa

...

luokille

...

on

...

määritelty

...

useita

...

operaattoreita

...

ja

...

erikoistilanteissa

...

aktivoituvia

...

metodeja,

...

joita

...

ei

...

voi

...

määrittää

...

suoraan

...

samalla

...

tavalla

...

kuin

...

tavallisia

...

metodeja.

...

Näihin

...

metodeihin

...

sisältyy

...

useat

...

operaattorit

...

kuten

...

+,

...

*

...

ja

...

indeksointi

...

Nämä

...

toiminnot

...

pääsee

...

määrittämään

...

luokalle

...

nimeämällä

...

metodi

...

tiettyä

...

toimintoa

...

kuvaavalla

...

sisäänrakennetulla

...

tunnisteella.

...

Kaikkien

...

tälläisten

...

tunnisteiden

...

nimet

...

alkavat

...

ja

...

loppuvat

...

kahdella

...

alaviivalla.

...

Esimerkiksi

...

_init

...

_

...

on

...

muodostinfunktio;

...

metodi,

...

jota

...

kutsutaan

...

kun

...

olio

...

luodaan.

...

Sille

...

voi

...

välittää

...

parametreja

...

niinkuin

...

muillekkin

...

funktioille.

...

Tässä

...

esimerkissä

...

lpFilter

...

luokkaan

...

on

...

lisätty

...

muodostinfunktio,

...

joka

...

ottaa

...

parametrikseen

...

kokonaisluvun,

...

jonka

...

avulla

...

voi

...

määrittää

...

kuinka

...

monesta

...

luvusta

...

keskiarvo

...

otetaan.

...

Osa

...

luokan

...

jäsenmuuttujista

...

alustetaan

...

nyt

...

muodostin

...

funktiossa.

{
Code Block
}
 class lpFilter:
    _pointer = 0
    _output = 0.0
    def __init__(self, maxNumberOfValues = 10):
        _numberOfValues = maxNumberOfValues
        _values = [0.0] * maxNumberOfValues
    def getValue(self):
        return self._output
    def insertValue(self, x):
        self._pointer = (self._pointer + 1) % self._numberOfValues
        self._values[self._pointer] = x
        self._calculateOutput()
        return self._output
    def _calculateOutput(self):
        sum = 0.0
        for i in self._values:
            sum += i
        self._output = sum / self._numberOfValues
{code}

Muut

...

vastaavat

...

erikoismetodit

...

on

...

lueteltu

...

Pythonin

...

dokumentaatiossa

...

-

...

kohdassa

...

"Python

...

Language

...

Reference"

...

>

...

"Data

...

model".

...

Tässä

...

on

...

vielä

...

(hieman

...

keinotekoinen)

...

esimerkki

...

operaattorin

...

määrittelystä.

...

Luokkaan

...

lpFilter

...

on

...

lisätty

...

funktio

...

_

...

add

...

_,

...

jonka

...

avulla

...

määritellään

...

yhteenlasku

...

operaattorin

...

toiminta

...

-

...

tässä

...

tapauksessa

...

kahdelle

...

lpFilter

...

oliolle.

...

Funktio

...

ottaa

...

parmametrikseen

...

operaattorin

...

oikealla

...

puolella

...

olevan

...

olion,

...

vasemman

...

puolen

...

ollessa

...

olio,

...

jonka

...

metodia

...

kutsutaan;

...

eli

...

x

...

+

...

y

...

on

...

sama

...

kuin

...

x.

...

_add

...

_

...

(y).

...

Lasku

...

palauttaa

...

kahden

...

lpFilter

...

olion

...

ulostulon

...

summan.

{
Code Block
}
 class lpFilter:
    _pointer = 0
    _output = 0.0
    def __init__(self, maxNumberOfValues = 10):
        self._numberOfValues = maxNumberOfValues
        self._values = [0.0] * maxNumberOfValues
    def getValue(self):
        return self._output
    def insertValue(self, x):
        self._pointer = (self._pointer + 1) % self._numberOfValues
        self._values[self._pointer] = x
        self._calculateOutput()
        return self._output
    def _calculateOutput(self):
        sum = 0.0
        for i in self._values:
            sum += i
        self._output = sum / self._numberOfValues
    def __add__(self, rside):
        return self._output + rside._output
{code}

Kuten

...

koodista

...

näkyy,

...

olion

...

yksityisten

...

jäsenmuuttujien

...

muokkaaminen

...

on

...

mahdollista

...

ei

...

vain

...

olion

...

itsensä

...

sisällä,

...

vaan

...

toisessa

...

saman

...

luokan

...

oliossa.

...

Tässä

...

tapauksessa

...

metodissa

...

_add

...

_

...

käytetään

...

parametrin

...

rside

...

jäsenmuuttujaa

...

_output

...

suoraan

...

vaikka

...

se

...

on

...

yksityinen.

...

Luokka

...

toimii

...

ja

...

sitä

...

voikin

...

testata

...

vaikka

...

interaktiivisesti.

{
Code Block
}
>>> a = lpFilter(2)
>>> b = lpFilter(2)
>>> a.insertValue(10)
5.0
>>> b.insertValue(44)
22.0
>>> a + b
27.0
>>>
{code}