python泛型如何获取传入的类型

908
2023/10/1 22:08:26
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

Python中的泛型并不是强类型,因此无法直接获取传入的类型。 Python的类型注解主要是用来提供静态类型检查的,而在运行时并没有真正的类型信息。

但是,你可以使用typing模块中的TypeTypeVar来实现类型参数的传递和获取。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模块中的TypeTypeVar主要用于静态类型检查,运行时并没有真正的类型信息。因此,Type只能获取到实际类型的基本信息,如<class 'str'><class 'int'>等,而无法获取到更详细的类型信息。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: python怎么求三个数中的最大值