我有一个通用类F5
。
我的问题是,是否有任何函数返回作为通用类型传递给类Graph[Generic[T], object]
Graph
答案 0 :(得分:2)
这是从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()
输出:
<class 'int'>
<class 'str'>
如果您想获取__new__
或__init__
内的类型有些棘手,请参见以下帖子以了解更多信息:Generic[T] base class - how to get type of T from within instance?
修改
库pytypes似乎提供了一种即使从init即可获取 orig_class 的方法,请在此处查看方法get_orig_class
:https://github.com/Stewori/pytypes/blob/master/pytypes/type_util.py