Mkdir700's Note

Mkdir700's Note

Python

Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

Python中使用泛型类型时,可以通过typing库中的get_args和get_origin函数获取泛型参数的类型。对于Dict[str, int]这样的泛型参数,可以通过get_args获取内部的泛型参数,通过get_origin获取原始类。在实例方法中获取原始类及泛型参数的数据类型可以使用self.__orig_class__属性。对于Generic类的源码分析,Generic类实际上是_GenericAlias的实例化,而使用()实例化对象实际上调用了_GenericAlias的__call__方法。通过分析源码可以理解为什么必须在__init__, __new__之后才能使用泛型参数的类型。
1237
0
1
2023-02-23