User Tools

Site Tools


appunti3s:python_oggetti_e_attributi

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:

  • 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'
appunti3s/python_oggetti_e_attributi.txt · Last modified: 2020/08/01 11:11 by profpro