appunti3s:creare_classi_e_funzioni_in_python
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
appunti3s:creare_classi_e_funzioni_in_python [2020/07/13 21:11] – [Esempio 2 da terminare] profpro | appunti3s:creare_classi_e_funzioni_in_python [2020/07/29 18:42] (current) – [Parametri opzionali] profpro | ||
---|---|---|---|
Line 45: | Line 45: | ||
* __attributi__ (dati e metodi) = tutto quello che viene dopo un punto (anche una funzione math.…). | * __attributi__ (dati e metodi) = tutto quello che viene dopo un punto (anche una funzione math.…). | ||
* __attributo dato__ = sono le variabili di un particolare oggetto istanza. Vivono nel namespace dell' | * __attributo dato__ = sono le variabili di un particolare oggetto istanza. Vivono nel namespace dell' | ||
- | * __attributo metodo__ = sono le funzioni di un particolare oggetto istanza. Vivono nel namespace dell' | + | * __attributo metodo__ = sono le funzioni di un particolare oggetto istanza. Vivono nel namespace dell' |
* in Python è possibile rinominare i metodi (detti attributi metodi) perciò nella classe bisogna evitare conflitti di nome tra dati e funzioni. Si possono usare sostantivi per i primi e verbi per i secondi... | * in Python è possibile rinominare i metodi (detti attributi metodi) perciò nella classe bisogna evitare conflitti di nome tra dati e funzioni. Si possono usare sostantivi per i primi e verbi per i secondi... | ||
Line 53: | Line 53: | ||
===== Namespace ===== | ===== Namespace ===== | ||
- | TO DO: Come si divide il codice in più file.py? | + | Come si divide il codice in più file.py? |
+ | |||
+ | Questi moduli python sono salvati nella sottocartella " | ||
La keyword //global// si usa per definire oggetti globali (meglio usarla solo per le funzioni) | La keyword //global// si usa per definire oggetti globali (meglio usarla solo per le funzioni) | ||
Line 78: | Line 80: | ||
Questa classe servirà al futuro **programmatore** per creare, ogni volta che serve, un oggetto auto. | Questa classe servirà al futuro **programmatore** per creare, ogni volta che serve, un oggetto auto. | ||
Il programmatore, | Il programmatore, | ||
- | < | + | < |
+ | |||
+ | auto1.__class__ | ||
+ | |||
+ | auto1.__doc__ #stampa la documentazione | ||
Ora nella memoria del computer c'è una auto, ma è strana perché non si conosce nulla di quest' | Ora nella memoria del computer c'è una auto, ma è strana perché non si conosce nulla di quest' | ||
Come può il futuro programmatore memorizzare la targa, il prezzo e i restanti attributi di questa auto? Li può specificare tra parentesi in questo modo: | Come può il futuro programmatore memorizzare la targa, il prezzo e i restanti attributi di questa auto? Li può specificare tra parentesi in questo modo: | ||
Line 93: | Line 100: | ||
</ | </ | ||
- | %%__init__()%% è un //attributo metodo// (una funzione) che descrive gli //attributi dato// e la loro inizializzazione. È uno degli attributi metodo più importanti che lo sviluppatore deve preparare. Il programmatore lo usa (senza saperlo) ogni volta che crea un oggetto. | + | - Riassumendo: |
Notare che mentre la chiamata del metodo contiene 3 parametri, nella funzione %%__init__()%% ce ne sono 4... | Notare che mentre la chiamata del metodo contiene 3 parametri, nella funzione %%__init__()%% ce ne sono 4... | ||
Notare anche l' | Notare anche l' | ||
+ | |||
+ | ==== Parametri opzionali ==== | ||
+ | Nel caso in cui chi usa la classe Auto non fornisca la targa, si può attribuirle un valore predefinito. | ||
+ | In caso contrario si solleverebbe un' | ||
+ | |||
+ | def __init__(self, | ||
==== Esempio 2 da terminare ==== | ==== Esempio 2 da terminare ==== | ||
Line 126: | Line 139: | ||
<file python bind01.py> | <file python bind01.py> | ||
# | # | ||
- | import tkinter | + | import tkinter |
- | class ContoCorrente: | + | class ContoCorrente(tk.Frame): |
""" | """ | ||
# gli attributi vanno cercati, perche' | # gli attributi vanno cercati, perche' | ||
# ad esempio , due attributi sono i due pulsanti | # ad esempio , due attributi sono i due pulsanti | ||
def __init__(self, | def __init__(self, | ||
- | | + | |
- | | + | |
- | | + | |
- | # che la mantiene in vita... | + | |
- | frame.bind("< | + | |
- | | + | |
- | def say_click(self, event): | + | def creare(self): |
- | print(" | + | self.var_oggetto = tk.Button(self) |
+ | self.var_oggetto[" | ||
+ | self.var_oggetto.bind('< | ||
+ | self.var_oggetto.pack(side=" | ||
+ | |||
+ | def stampaclick(self, | ||
+ | print(" | ||
+ | |||
+ | def main(): | ||
+ | root = tk.Tk() | ||
+ | root.geometry(" | ||
+ | app = ContoCorrente(root) # crea altri elementi della finestra genitore | ||
+ | root.mainloop() # loop degli eventi eseguito fino alla chiusura | ||
# programma | # programma | ||
+ | if __name__ == ' | ||
+ | main() | ||
- | root = tkinter.Tk() | ||
- | root.geometry(" | ||
- | |||
- | app = tkinter.App(root) # crea altri elementi della finestra genitore | ||
- | |||
- | root.mainloop() # loop degli eventi eseguito fino alla chiusura | ||
</ | </ | ||
appunti3s/creare_classi_e_funzioni_in_python.1594667516.txt.gz · Last modified: 2020/07/13 21:11 by profpro