gpt4 book ai didi

python - 如何在运行时检查 TypeVar 的类型

转载 作者:行者123 更新时间:2023-12-04 12:16:47 30 4
gpt4 key购买 nike

我有一个通用类 Graph[Generic[T], object] .
我的问题是,是否有任何函数返回作为泛型传递给类 Graph 的类型?

>>> g = Graph[int]()
>>> magic_func(g)
<class 'int'>

最佳答案

这是实现这一点的一种方法,它适用于 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 似乎提供了一种允许获取 的方法。 orig_class 即使从 init 开始,检查方法 get_orig_class在这里可用: https://github.com/Stewori/pytypes/blob/master/pytypes/type_util.py

关于python - 如何在运行时检查 TypeVar 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60584388/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com