Python NewType – Tipos Iguais Mas Diferentes? (Type Hints – Aula 15)

学習

Já passou acidentalmente um product_id para uma função que esperava um user_id? Se ambos são int, o type checker não reclama, mas a sua lógica quebra de forma silenciosa e perigosa. Na Aula 15 do nosso curso de Type Hints, vamos resolver esse problema com uma das ferramentas mais elegantes e sutis do typing: o NewType.

Vamos descobrir como criar tipos nominais distintos que existem apenas para o type checker, garantindo que você nunca mais misture tipos primitivos com significados diferentes. E o melhor de tudo? Com praticamente zero impacto na performance do seu código em produção.

Esta é uma aula fundamental sobre como usar o sistema de tipos para prevenir bugs lógicos, e não apenas erros de sintaxe.

Nesta aula da nossa playlist completa sobre Type Hints no Python, você vai aprender:

– O que é NewType e por que ele é superior a um TypeAlias para garantir a segurança entre tipos.
– Como criar tipos distintos como UserId e PostId a partir de int e impedir que eles sejam misturados.
– A “pegadinha” do NewType: o que ele realmente faz (ou NÃO faz) em tempo de execução (runtime).
– Por que NewType se comporta como uma “função de identidade” e como isso afeta seu código.
– Como usar typing.cast para fazer a “ponte” entre dados do mundo real (ex: um int vindo do banco de dados) e seus novos tipos seguros.

Se você quer adicionar uma camada extra de robustez e clareza semântica ao seu código, esta aula é essencial.

E lembre-se: Type Hint é igual a Type Annotation (tipagem no Python).

Este vídeo é parte de uma playlist, essa é a DÉCIMA QUINTA aula. Segue o link da playlist para acompanhar:

Type Hints no Python: Aprenda do Jeito CERTO (Aula 1)

Link do repositório:
https://github.com/luizomf/typehints_python

Meus Cursos: https://www.otaviomiranda.com.br/
Newsletter: https://luizomf.substack.com/

Capítulos
00:00:00 – Introdução ao NewType no Python
00:01:10 – Quando usar NewType ou Classes?
00:03:27 – Como usar NewType para tipos distintos?
00:05:28 – NewType NÃO gera uma Classe ou Subclasse em Runtime
00:05:28 – NewType NÃO gera uma Classe ou Subclasse em Runtime
00:08:53 – O que o NewType NÃO É?
00:13:38 – NewType não pode ser Generic, nem TypeAlias
00:20:50 – Use cast para Type Cast do NewType para o tipo adequado

#Python #TypeHints #CleanCode #SoftwareArchitecture #PythonBrasil

コメント

  1. @squishy-tomato より:

    Sei que o exemplo foi pra demonstrar NewType, mas só adicionando: Tem um jeito de escrever esse código e ter os tipos certos sem deixar na mão de outro dev pra usar cast(): é só anotar fn com TypeVar’s em vez de usar NotGenericNT’s.

    Nesse caso, o type checker vai ter informação suficiente pra saber os tipos de value1 e value2 sem cast; e ainda vai te ajudar a manter a propriedade que fn sempre retorna o mesmo tipo que recebe como argumento, evitando algum erro de implementação em fn().

タイトルとURLをコピーしました