gpt4 book ai didi

python - 如何在 python 中获取完整的类型名称?

转载 作者:太空狗 更新时间:2023-10-30 01:16:14 29 4
gpt4 key购买 nike

type()的打印结果在 Python 中,有时会显示不在当前范围内的类型名称。例如,以下代码将显示 "<type 'frame'>"

import inspect
a = inspect.currentframe()
print( type( a ) )

但是没有frame输入当前范围!如果我尝试在交互式解释器中使用它,我会得到一个错误:

>>> frame
NameError: name 'frame' is not defined

那么有什么办法可以得到像“inspect.something.frame”这样的“完全限定”类型名称,以便我可以在我的代码中引用它?

更新

不幸的是,__module__也不起作用:

>>> type( a ).__module__
'__builtin__'

最佳答案

"What's in a name? That which we call a frame 
By any other name would smell as sweet."

如果您正在寻找对应于框架类型的 Python 对象,您可以使用:

In [38]: import types

In [39]: types.FrameType
Out[39]: <type 'frame'>

当然,这只是type(a)的另一种写法:

In [42]: import inspect

In [43]: a = inspect.currentframe()

In [44]: types.FrameType == type(a)
Out[44]: True

如果您查看 types 模块,您会发现 types.FrameType 是这样定义的:

try:
raise TypeError
except TypeError:
tb = sys.exc_info()[2]
TracebackType = type(tb)
FrameType = type(tb.tb_frame)
del tb

他们所做的只是找到一个 frame 的实例,并将 FrameType 定义为该实例的 type

这基本上就是你在定义时所做的事情

MyFrameType = type(a)

所以结论是:要获得实例的类型,只需调用type(obj)。您不需要事先知道任何其他信息。

关于python - 如何在 python 中获取完整的类型名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165101/

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