Table of Contents

Oggetti e attributi

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()

40.py
import Tkinter
root = Tkinter.Tk()
root.title(“il mio programma”)
root.mainloop()

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:

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:

Nel caso in cui si tenti di invocare un metodo privato, si ottiene un errore poco chiaro:

AttributeError: 'Classe' instance has no attribute '__esempio1'