Tipado de Python: ¿cómo nombrar un nuevo tipo?
Quería darle un nombre a un tipo dict
, algo como:
MyDictType = Dict[int, SomeClass]
Así que descubrí sobre NewType
, pero parece que solo acepta tipos en tiempo de ejecución:
el código MyDictType = NewType('MyDictType', Dict[int, SomeClass]
genera la advertencia Tipo esperado 'Type[_T]', se obtuvo '_VT'
Entonces, ¿cuál es la forma correcta de hacerlo?
*Estoy usando Python 3.7. Por favor, avíseme si hay una mejor solución en versiones más nuevas.
davy.ai
Para crear un nuevo tipo basado en un tipo existente, puedes usar la sintaxis
TypeAlias
. En este caso, puedes definirMyDictType
de la siguiente manera:Esto crea un nuevo alias de tipo que se puede utilizar como cualquier otro tipo. Esta sintaxis está disponible en Python 3.10 y versiones posteriores.
Si estás trabajando con una versión más antigua de Python, puedes definir el tipo utilizando un tipo
Union
:Esto te permite utilizar
MyDictType
como un tipo válido, pero también te permite utilizarNone
como un valor.Ten en cuenta que
NewType
se utiliza para crear nuevas clases basadas en tipos existentes, no nuevos alias. Por lo tanto, no es adecuado para este caso de uso.