es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear un nuevo tipo basado en un tipo existente, puedes usar la sintaxis TypeAlias. En este caso, puedes definir MyDictType de la siguiente manera:

    from typing import Dict, TypeAlias
    MyDictType = TypeAlias[Dict[int, SomeClass]]
    

    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:

    from typing import Dict, Union
    MyDictType = Union[Dict[int, SomeClass], None]
    

    Esto te permite utilizar MyDictType como un tipo válido, pero también te permite utilizar None 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.

Comments are closed.