Du blander attributt og metode

Handler om: Attributt (egenskap), Metode, Klassediagram (UML)

Et attributt er noe objektet *har* — en verdi, som `bil.fart`. En metode er noe objektet *gjør* — en handling du kaller, som `bil.kjør()`. I klassediagrammet har de hvert sitt felt: attributtene i midten, metodene nederst. Forvekslingen viser seg som `bil.fart()`, eller som en `def` plassert blant attributtene.

Eksempel

Du skriver `ball.x()` og får «TypeError: 'int' object is not callable», fordi `x` er en verdi, ikke en handling.

Slik tenker du riktig om det

Parentesene er testen: de betyr «gjør dette nå». Har navnet parenteser, er det en handling; står det bart, er det en verdi.

Slik ser det ut i kode

Slik gikk det galt

print(ball.x())        # x er en verdi — ikke kall den

Slik fikser du det

print(ball.x)          # attributt: les verdien
ball.flytt()           # metode: utfør handlingen

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala