Return to Video

02-18 Data Invariants

  • 0:00 - 0:08
    Dunque, a questo punto abbiam visto che scrivere asserzioni perfette che trovino ogni bug e' piuttosto difficile,
  • 0:08 - 0:13
    mu questo non deve impedirci di scrivere asserzioni che catturino piu' bug che sia possibile
  • 0:13 - 0:16
    e cio' e' particolarmente utile facendo debugging.
  • 0:16 - 0:19
    Dato che le asserzioni sono automatiche, possono verificare
  • 0:19 - 0:24
    numerose esecuzioni di una funzione per volta -- effettivamente tutte le esecuzioni.
  • 0:24 - 0:29
    Comunque, possono anche verificare grosse porzioni di dati allo stesso tempo e tutto in automatico.
  • 0:29 - 0:34
    Cosa intendo con grosse porzioni di dati? Te lo illustro con un esempio:
  • 0:34 - 0:37
    supponi di voler implementare una classe orario.
  • 0:37 - 0:42
    Un orario e' composto di ore, minuti e secondi e vogliamo usare delle asserzioni
  • 0:42 - 0:46
    che controllino in automatico che l'oggetto orario sia coerente,
  • 0:46 - 0:50
    cioe' che le ore stiano nel giusto intervallo, i minuti stiano nel giusto intervallo,
  • 0:50 - 0:52
    e pure i secondi stiano nel giusto intervallo.
  • 0:52 - 0:57
    Ecco la nostra classe time (orario) -- cominceremo con un inizializzatore o costruttore che prenda
  • 0:57 - 1:00
    tre argomenti: ore, minuti e secondi,
  • 1:00 - 1:05
    con valori di defalut 0 per ognuno e gli assegnamo a singoli attibuti
  • 1:05 - 1:09
    chiamandoli hours, minutes e seconds all'interno dell'oggetto time.
  • 1:09 - 1:13
    Ecco una serie di metodi di ispezione che ci danno accesso agli attributi interni
  • 1:13 - 1:15
    hours, minutes, e seconds.
  • 1:15 - 1:20
    Dopo aver aggiunto i metodi d'ispezione, che ci danno le ore i muinuti e i secondi,
  • 1:20 - 1:23
    ci serve un modo per stampare a video l'oggetto time.
  • 1:23 - 1:30
    Per far cio', Python ci offre un metodo speciale chiamato repr come 'rappresentazione',
  • 1:30 - 1:35
    il metodo interno con due underscore iniziali e finali, e cio' che fa questa cosa,
  • 1:35 - 1:40
    questo metodo viene chiamato ogni volta che un oggetto di una certa classe viene stampato a video
  • 1:40 - 1:44
    e questo ritorna una stringa che rappresenta l'oggetto.
  • 1:44 - 1:50
    Quindi che cosa che fa: useremo il metodo formato stringa qui, che prende una serie di argomenti
  • 1:50 - 1:55
    e formatta ognuno di questi nel formato specificato scritto qui in questa stringa.
  • 1:55 - 2:02
    Quindi per esempio ":2d" stampa l'argomento numerico qui con 2 cifre
  • 2:02 - 2:07
    anche self.minutes sara' a 2 cifre, self.second sara' pure a 2 cifre.
  • 2:07 - 2:09
    Questo formato non e' ancora perfetto.
  • 2:09 - 2:11
    Noi vogliamo degli zeri iniziali qui
  • 2:11 - 2:16
    e vogliamo ore minuti e secondi separati da duepunti.
  • 2:16 - 2:22
    Quindi ecco una stringa: prima le ore, due cifre, zero iniziale, poi i minuti due cifre, zero iniziale
  • 2:22 - 2:25
    e poi i secondi due cifre, zero iniziale.
  • 2:25 - 2:27
    Vediamo se funziona:
  • 2:27 - 2:32
    inizializzo un oggetto time qui con 13 ore, 0 minuti, 0 secondi.
  • 2:32 - 2:36
    Useremo l'orario di 24 ore qui e lo stampero' a video.
  • 2:36 - 2:40
    Nello stampare a video chiamero' questo metodo repr, che automaticamente
  • 2:40 - 2:43
    ci dara' una bella rappresentazione in stringa del nostro orario.
  • 2:43 - 2:46
    Lanciamo tutta sta cosa e avremo una bella rappresentazione
  • 2:46 - 2:50
    13 ore, 0 minuti e 0 secondi: l'una di pomeriggio.
Title:
02-18 Data Invariants
Video Language:
English
Team:
Udacity
Project:
CS259 - Software Debugging
Duration:
02:53
fabio added a translation

Italian subtitles

Revisions