Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Bruk av getters og setters | Innkapsling
Objektorientert Programmering i Python

bookBruk av getters og setters

Sveip for å vise menyen

Egenskaper og getters/setters gir kontrollert tilgang til klasseattributter, og gjør enkel attributtilgang til kraftige, validerte og beregnede interaksjoner. De bygger bro mellom direkte bruk av attributter og metodebasert kontroll, og kombinerer lesbarhet med robusthet.

Egenskaper i Python bruker descriptor-protokollen i bakgrunnen. Dette gjør at metoder dekorert med @property kan oppføre seg som attributter, samtidig som de kjører egendefinert logikk.

12345678910111213141516171819202122
class Temperature: def __init__(self, celsius): self._celsius = celsius @property def celsius(self): return self._celsius @celsius.setter def celsius(self, value): if -273.15 <= value <= 1e4: # validation self._celsius = value else: raise ValueError("Invalid temperature") @property def fahrenheit(self): return (self._celsius * 9/5) + 32 t = Temperature(25) print(t.fahrenheit) # Computed property t.celsius = -300 # Raises ValueError
copy

Profesjonelle mønstre inkluderer lat evaluering for ressurskrevende beregninger, mellomlagring for ofte brukte verdier, tydelige feilmeldinger ved validering, og grundig dokumentasjon av egenskapsatferd. Egenskaper bør oppleves som naturlige attributter samtidig som de gir kontroll som metoder.

Ytelseshensyn er viktig for ofte brukte egenskaper. Enkle getters/setters har minimal overhead, men avansert validering eller tunge beregninger kan redusere ytelsen. I slike tilfeller er mellomlagring, lat evaluering og effektive algoritmer avgjørende.

Valget mellom egenskaper og tradisjonelle getters/setters avhenger av behov: egenskaper gir renere syntaks og følger Python-idiomer, mens eksplisitte metoder kan være bedre for avansert validering eller metodebaserte API-er.

question mark

Hvilken fordel gir Python-egenskaper sammenlignet med tradisjonelle getter- og setter-metoder?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 5. Kapittel 3
some-alt