Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
Escriba sugerencias con clases definidas por el usuario

Parece que no se pudo encontrar una respuesta definitiva. Quiero hacer una sugerencia de tipo para una función y el tipo es una clase personalizada que he definido, la llamé CustomClass() .

Y luego digamos en alguna función, FuncA(arg) , tengo un argumento llamado arg . ¿Sería la forma correcta de escribir la sugerencia FuncA :

 def FuncA(arg: CustomClass):

O sería:

 from typing import Type def FuncA(Arg:Type[CustomClass]):
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Lo primero es correcto , si arg acepta una instancia de CustomClass :

 def FuncA(arg: CustomClass): # ^ instance of CustomClass

En caso de que desee la clase CustomClass en sí misma (o un subtipo) , debe escribir:

 from typing import Type # you have to import Type def FuncA(arg: Type[CustomClass]): # ^ CustomClass (class object) itself

Como está escrito en la documentación sobre Typing :

 class typing.Type(Generic[CT_co])

Una variable anotada con C puede aceptar un valor de tipo C Por el contrario, una variable anotada con Type[C] puede aceptar valores que son clases en sí mismos ; específicamente, aceptará el objeto de clase de C .

La documentación incluye un ejemplo con la clase int :

 a = 3 # Has type 'int' b = int # Has type 'Type[int]' c = type(a) # Also has type 'Type[int]'
over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Willem Van Onsem es, por supuesto, correcta, pero me gustaría ofrecer una pequeña actualización. En PEP 585 , se introdujeron los genéricos de sugerencias de tipo en las colecciones estándar. Por ejemplo, mientras que anteriormente teníamos que decir, por ejemplo,

 from typing import Dict foo: Dict[str, str] = { "bar": "baz" }

ahora podemos renunciar a la jerarquía de tipos paralelos en el módulo de typing y simplemente decir

 foo: dict[str, str] = { "bar": "baz" }

Esta característica está disponible en python 3.9+, y también en 3.7+ si se usa from __future__ import annotations .

En términos de esta pregunta específica, significa que en lugar de from typing import Type , ahora podemos simplemente anotar clases usando el type incorporado:

 def FuncA(arg: type[CustomClass]):
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda