Capitolo 13. I protocolli
Questo lavoro è stato tradotto utilizzando l'AI. Siamo lieti di ricevere il tuo feedback e i tuoi commenti: translation-feedback@oreilly.com
Devo fare una confessione. Ho aggirato un aspetto del sistema di tipi di Python che, a prima vista, è contraddittorio. Ha a che fare con una differenza chiave di filosofia tra il sistema di tipi runtime di Python e i suggerimenti di tipo statico.
Nel Capitolo 2 ho descritto come Python supporta la tipizzazione delle anatre. Ricordiamo che questo significa che puoi usare gli oggetti in un contesto a patto che quell'oggetto supporti una serie di comportamenti specifici. Non è necessario avere una classe madre o una struttura di ereditarietà predefinita per utilizzare la tipizzazione dell'anatra.
Tuttavia, il typechecker non ha la minima idea di come gestire la tipizzazione di un'anatra senza alcuna assistenza. Il typechecker sa come gestire i tipi conosciuti al momento dell'analisi statica, ma come fa a gestire le decisioni relative alla tipizzazione di anatre prese in runtime?
Per rimediare a questo inconveniente, introdurrò i protocolli, una funzione introdotta in Python 3.8. I protocolli risolvono le contraddizioni sopra elencate: annotano le variabili con tipizzazione a vuoto durante il typechecking. Ti spiegherò perché hai bisogno dei protocolli, come definire i tuoi e come utilizzarli in scenari avanzati. Prima di iniziare, però, devi capire la differenza tra la tipizzazione di Python e i typechecker statici. ...