with tutorial the espaƱol applications python python-3.x user-defined-types type-hinting

python - tutorial - the django project



Escriba sugerencias con clases definidas por el usuario (1)

Parece que no 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, que se llama 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:

def FuncA(Arg:Type[CustomClass]): :?


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 (o un subtipo) , debe escribir:

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

Al igual que 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 En contraste, una variable anotada con el Type[C] puede aceptar valores que son clases en sí , específicamente, aceptará la clase objeto 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]''