jas*_*007 9 python generics static-typing python-typing
我有一个通用类Graph[Generic[T], object]。
我的问题是,是否有任何函数返回作为泛型传递给类的类型Graph
>>> g = Graph[int]()
>>> magic_func(g)
<class 'int'>
Run Code Online (Sandbox Code Playgroud)
这是实现此目的的一种方法,适用于 Python 3.6+(在 3.6、3.7 和 3.8 中进行了测试):
from typing import TypeVar, Generic
T = TypeVar('T')
class Graph(Generic[T], object):
def get_generic_type(self):
print(self.__orig_class__.__args__[0])
if __name__=='__main__':
g_int = Graph[int]()
g_str = Graph[str]()
g_int.get_generic_type()
g_str.get_generic_type()
Run Code Online (Sandbox Code Playgroud)
输出:
<class 'int'>
<class 'str'>
Run Code Online (Sandbox Code Playgroud)
如果您想获取内部类型__new__或者__init__事情变得有点棘手,请参阅以下帖子以获取更多信息:Generic[T] 基类 - 如何从实例内获取 T 的类型?
编辑
库 pytypes 似乎提供了一种允许__orig_class__从 获得偶数的方法,请检查此处可用的__init__方法:https: //github.com/Stewori/pytypes/blob/master/pytypes/type_util.pyget_orig_class
| 归档时间: |
|
| 查看次数: |
5521 次 |
| 最近记录: |