WEBVTT 00:00:00.000 --> 00:00:08.000 Dunque, a questo punto abbiam visto che scrivere asserzioni perfette che trovino ogni bug e' piuttosto difficile, 00:00:08.000 --> 00:00:13.000 mu questo non deve impedirci di scrivere asserzioni che catturino piu' bug che sia possibile 00:00:13.000 --> 00:00:16.000 e cio' e' particolarmente utile facendo debugging. 00:00:16.000 --> 00:00:19.000 Dato che le asserzioni sono automatiche, possono verificare 00:00:19.000 --> 00:00:24.000 numerose esecuzioni di una funzione per volta -- effettivamente tutte le esecuzioni. 00:00:24.000 --> 00:00:29.000 Comunque, possono anche verificare grosse porzioni di dati allo stesso tempo e tutto in automatico. 00:00:29.000 --> 00:00:34.000 Cosa intendo con grosse porzioni di dati? Te lo illustro con un esempio: 00:00:34.000 --> 00:00:37.000 supponi di voler implementare una classe orario. 00:00:37.000 --> 00:00:42.000 Un orario e' composto di ore, minuti e secondi e vogliamo usare delle asserzioni 00:00:42.000 --> 00:00:46.000 che controllino in automatico che l'oggetto orario sia coerente, 00:00:46.000 --> 00:00:50.000 cioe' che le ore stiano nel giusto intervallo, i minuti stiano nel giusto intervallo, 00:00:50.000 --> 00:00:52.000 e pure i secondi stiano nel giusto intervallo. 00:00:52.000 --> 00:00:57.000 Ecco la nostra classe time (orario) -- cominceremo con un inizializzatore o costruttore che prenda 00:00:57.000 --> 00:01:00.000 tre argomenti: ore, minuti e secondi, 00:01:00.000 --> 00:01:05.000 con valori di defalut 0 per ognuno e gli assegnamo a singoli attibuti 00:01:05.000 --> 00:01:09.000 chiamandoli hours, minutes e seconds all'interno dell'oggetto time. 00:01:09.000 --> 00:01:13.000 Ecco una serie di metodi di ispezione che ci danno accesso agli attributi interni 00:01:13.000 --> 00:01:15.000 hours, minutes, e seconds. 00:01:15.000 --> 00:01:20.000 Dopo aver aggiunto i metodi d'ispezione, che ci danno le ore i muinuti e i secondi, 00:01:20.000 --> 00:01:23.000 ci serve un modo per stampare a video l'oggetto time. 00:01:23.000 --> 00:01:30.000 Per far cio', Python ci offre un metodo speciale chiamato repr come 'rappresentazione', 00:01:30.000 --> 00:01:35.000 il metodo interno con due underscore iniziali e finali, e cio' che fa questa cosa, 00:01:35.000 --> 00:01:40.000 questo metodo viene chiamato ogni volta che un oggetto di una certa classe viene stampato a video 00:01:40.000 --> 00:01:44.000 e questo ritorna una stringa che rappresenta l'oggetto. 00:01:44.000 --> 00:01:50.000 Quindi che cosa che fa: useremo il metodo formato stringa qui, che prende una serie di argomenti 00:01:50.000 --> 00:01:55.000 e formatta ognuno di questi nel formato specificato scritto qui in questa stringa. 00:01:55.000 --> 00:02:02.000 Quindi per esempio ":2d" stampa l'argomento numerico qui con 2 cifre 00:02:02.000 --> 00:02:07.000 anche self.minutes sara' a 2 cifre, self.second sara' pure a 2 cifre. 00:02:07.000 --> 00:02:09.000 Questo formato non e' ancora perfetto. 00:02:09.000 --> 00:02:11.000 Noi vogliamo degli zeri iniziali qui 00:02:11.000 --> 00:02:16.000 e vogliamo ore minuti e secondi separati da duepunti. 00:02:16.000 --> 00:02:22.000 Quindi ecco una stringa: prima le ore, due cifre, zero iniziale, poi i minuti due cifre, zero iniziale 00:02:22.000 --> 00:02:25.000 e poi i secondi due cifre, zero iniziale. 00:02:25.000 --> 00:02:27.000 Vediamo se funziona: 00:02:27.000 --> 00:02:32.000 inizializzo un oggetto time qui con 13 ore, 0 minuti, 0 secondi. 00:02:32.000 --> 00:02:36.000 Useremo l'orario di 24 ore qui e lo stampero' a video. 00:02:36.000 --> 00:02:40.000 Nello stampare a video chiamero' questo metodo repr, che automaticamente 00:02:40.000 --> 00:02:43.000 ci dara' una bella rappresentazione in stringa del nostro orario. 00:02:43.000 --> 00:02:46.000 Lanciamo tutta sta cosa e avremo una bella rappresentazione 00:02:46.000 --> 00:02:50.000 13 ore, 0 minuti e 0 secondi: l'una di pomeriggio.