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