Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Utilizzo di Getter e Setter | Incapsulamento
Programmazione Orientata Agli Oggetti in Python

bookUtilizzo di Getter e Setter

Scorri per mostrare il menu

Le proprietà e i getter/setter forniscono un accesso controllato ai dati della classe, trasformando l'accesso semplice agli attributi in interazioni potenti, validate e calcolate. Colmano il divario tra l'uso diretto degli attributi e il controllo basato sui metodi, combinando leggibilità e robustezza.

Le proprietà in Python utilizzano il protocollo dei descrittori internamente. Questo consente ai metodi decorati con @property di comportarsi come attributi pur eseguendo logica personalizzata.

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

Pattern professionali includono la valutazione pigra per calcoli costosi, la memorizzazione nella cache per valori frequentemente accessibili, messaggi di errore chiari per la validazione e documentazione completa del comportamento delle proprietà. Le proprietà dovrebbero sembrare attributi naturali pur offrendo il controllo dei metodi.

Le considerazioni sulle prestazioni sono importanti per le proprietà frequentemente accessibili. I getter/setter semplici hanno un overhead minimo, ma la validazione complessa o i calcoli pesanti possono degradare le prestazioni. In questi casi, caching, valutazione pigra e algoritmi efficienti sono essenziali.

La scelta tra proprietà e getter/setter tradizionali dipende dalle esigenze: le proprietà offrono una sintassi più pulita e si allineano agli idiomi di Python, mentre i metodi espliciti possono essere preferibili per validazioni complesse o API basate su metodi.

question mark

Quale vantaggio offrono le proprietà di Python rispetto ai tradizionali metodi getter e setter?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 5. Capitolo 3
some-alt