我想创建一个函数,每当调用者获取错误实例的参数时都会调用该函数,它将打印调用者的__doc__
属性并退出。功能如下:
def checktype(objects,instances):
if not all([isinstance(obj,instance) for
obj,instance in zip(objects,instances)]):
print 'Type Error'
#Get __doc__ from caller
print __doc__
exit()
我陷入了必须获取__doc__
属性的步骤。我知道inspect
模块可以做到这一点,方式如下:
name=inspect.stack()[1][3]
possibles=globals().copy()
__doc__= possibles.get(name).__doc__
(您可以建议另一个与每个 Python 版本兼容的版本,包括 3.5)
但我认为必须有另一种方式。我持怀疑态度的原因是内置return
语句会立即向调用者返回某些内容,这意味着子函数必须有一个“钩子”或“管道”可以访问,它被用作媒介与父母交换信息。所以引发我兴趣的最初问题是:
这个管道是否只发送并且没有信息可以向后发送?
我无法回答这个问题,因为该return
声明仅在我搜索的网站中进行了简要说明。除此之外,inspect
据我所知,该模块将多个帧保存在堆栈中并在后台持续运行。对我来说,这就像我试图用迷你枪杀死一只苍蝇。我只需要调用者函数的名称,而不是 10 帧之前的函数。如果没有任何方法可以做到这一点,在我看来,这是 Python 必须具备的一个特性。我的问题是:
在 Python 中获取调用者属性的 Python 编程方式是什么,并具有普遍支持?对不起,如果我的问题存在无知,我愿意接受任何更正和“思想开放”。谢谢大家的答案。