User Tools

Site Tools


appunti3s:python_oggetti_e_attributi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
appunti3s:python_oggetti_e_attributi [2018/04/25 07:55] – external edit 127.0.0.1appunti3s:python_oggetti_e_attributi [2020/08/01 11:11] (current) profpro
Line 1: Line 1:
 +====== Oggetti e attributi ======
  
 +>> indice: [[appunti3s:linguaggio_python]]
 +
 +===== Cosa faremo? =====
 +
 +Riprendiamo l'esempio della costruzione di una finestra usando la classe Tkinter.Tk per parlare del contenuto degli oggetti.
 +
 +===== Prerequisiti =====
 +
 +Concetto di oggetto istanza, classe e metodo
 +
 +I metodi di solito consentono al programmatore di eseguire delle azioni sugli oggetti. Vediamo in questo esempio il metodo title()
 +<file python 40.py>
 +import Tkinter
 +root = Tkinter.Tk()
 +root.title(“il mio programma”)
 +root.mainloop()
 +</file>
 +Questo metodo imposta il titolo della finestra, memorizzandolo in una variabile/oggetto interna all'oggetto "root". In effetti tutti gli oggetti al loro interno sono costituiti da altri oggetti o da semplici variabili e questi elementi sono chiamati //attributi// dell'oggetto. Il programmatore non ha quasi mai la possibilità di modificare direttamente queste variabili, per esempio tramite un'assegnazione, ma deve usare i metodi predisposti per fare questo tipo di operazioni.
 +
 +Secondo la programmazione orientata agli oggetti, gli attributi "dato" delle classi e delle istanze devono essere difficili da modificare direttamente dal programmatore, ma solo tramite degli appositi attributi "metodi".
 +
 +I metodi possono essere divisi in due categorie:
 +  * metodi ispettori
 +  * metodi manipolatori
 +
 +  * I primi sono usati per vedere il dato senza modificarlo.
 +  * I secondi sono usati per modificare il dato (senza vederlo).
 +
 +Questo modo di scrivere il programma può sembrare difficile e innaturale, ma permette di avere dei vantaggi nella manutenzione del programma.
 +
 +====Attributi pubblici e privati====
 +Per rendere difficile modificare un attributo "dato", di solito lo si rende "privato". In altre parole si deve limitare la sua possibilità di accesso da parte del programma.
 +Viceversa i dati che non sono privati, sono detti pubblici, cioè chiunque vi può accedere da qualsiasi punto del programma.
 +
 +In Python per rendere pubblico o privato qualcosa, basta usare una convenzione sul nome:
 +  * %%__esempio1%% 
 +    * è la convenzione da usare per un elemento privato
 +  * esempio2 
 +    * è la convenzione da usare per un elemento pubblico
 +  * %%__esempio3__%% 
 +    * è la convenzione da usare per un elemento built-in (pubblico), una convenzione che il programmatore non dovrebbe mai adottare
 +
 +Nel caso in cui si tenti di invocare un metodo privato, si ottiene un errore poco chiaro: 
 +
 +  AttributeError: 'Classe' instance has no attribute '__esempio1'