Early Release parcial na plataforma O’Reilly Learning •Cerca de 100 páginas sobre type hints, em 4 capítulos + dezenas de exemplos •Novos exemplos simples com asyncio e concurrent.futures •Capítulo sobre protocolos e classes abstratas 100% repensado •Versão impressa EN: 4º trimestre, 2021 •Versão PT-BR: tradução começará depois da versão impressa EN 3
Normalmente você sabe qual o tipo sua função vai devolver, então especifique o tipo da forma mais precisa. Lembre-se da Lei de Postel, ou Princípio da Robustez
Não verifique se é-um pato: verifique se grasna-como-um-pato, anda-como-um-pato, etc. dependendo de qual parte do comportamento semelhante-a-pato você precisa [...] — Alex Martelli em comp-lang-python, 2000-07-26
implementa .quack() é um pato. ABC (Abstract Base Class): uma instância de Marreco é um pato porque Marreco herda de Pato. 29 “objeto semelhante a pato” (duck-like object) é um TIPO ESTRUTURAL
implementa .quack() é um pato. ABC (Abstract Base Class): uma instância de Marreco é um pato porque Marreco herda de Pato. 30 “objeto semelhante a pato” (duck-like object) é um TIPO ESTRUTURAL Marreco é um TIPO NOMINAL
Ela não serve para tipagem estática porque não define nenhum método! Se você declarar uma variável do tipo numbers.Number, o Mypy rejeitará qualquer operação com essa variável!