python泛型怎样获得传入的类型
Python中的泛型其实不是强类型,因此没法直接获得传入的类型。 Python的类型注解主要是用来提供静态类型检查的,而在运行时并没有真实的类型信息。
但是,你可使用typing
模块中的Type
和TypeVar
来实现类型参数的传递和获得。TypeVar
用于定义泛型类型参数,Type
用于获得实际类型。
下面是一个示例:
from typing import Type, TypeVar
T = TypeVar('T')
def get_type(obj: T) -> Type[T]:
return type(obj)
# 传入区分类型的参数
print(get_type("Hello")) # <class 'str'>
print(get_type(10)) # <class 'int'>
print(get_type([1, 2, 3])) # <class 'list'>
在上面的示例中,get_type()
函数接受一个泛型类型参数T
,并使用type()
函数获得传入参数obj
的实际类型。然后返回实际类型Type[T]
。
需要注意的是,typing
模块中的Type
和TypeVar
主要用于静态类型检查,运行时并没有真实的类型信息。因此,Type
只能获得到实际类型的基本信息,如<class 'str'>
、<class 'int'>
等,而没法获得到更详细的类型信息。
TOP