如果您有两个功能,例如:
def A
def B
并且A呼叫B,您能知道谁在B内部呼叫B时,例如:
def A () :
B ()
def B () :
this.caller.name
您可以使用检查模块获取所需的信息。它的堆栈方法返回帧记录列表。
>>> import inspect
def f():
… print inspect.stack()[1][3]
…
def g():
… f()
…
g()
g
print inspect.stack()[1][3]
与
print(inspect.stack()[1].function)
在上面的代码上。
问题内容: 我的目标是为此激发一个应用程序的时序图,我需要在运行时提供有关调用方和被调用方类名称的信息。我可以成功检索调用者函数,但无法获得调用者类名称吗? 当我打印堆栈时,没有有关调用程序类的信息。那么有可能在运行时检索调用方类吗? 问题答案: 好吧,在按提示进行了一些挖掘之后,这是我得到的: 调用时: 给定文件: 不知道从其他对象调用该对象时的行为。
我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。
问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至
我定义了一个名为marger的函数来查找两个参数(num1、num2)之间的较大数。现在,我想在另一个名为“最大”的函数中使用这个函数,这个函数获得一个数组并返回该数组的最大个数,但我被卡住了。有人能帮我吗?下面是我的代码:
问题内容: 设置:我需要在程序中使用的每个功能都有一个文件。 在此程序中,我需要从外部文件调用该函数。 我试过了: 但是我得到了错误: ImportError:没有名为“ file.py”的模块;文件不是包 我该如何解决这个问题? 问题答案: 导入时无需添加任何内容。只需编写,然后使用调用函数。之所以可能不起作用,是因为它是Python的核心模块之一,所以我建议你更改文件名。 请注意,如果你尝试将
问题内容: 我想知道如何获取函数调用者的绝对路径? 可以这样说: 在文件中我打电话; 是file中定义的函数。要求。那么,如何从节点中获取绝对路径? 问题答案: 这是一个如何使用stacktrace在节点中查找调用方文件的示例