我的目标是在程序运行时为每个发出的信号检索调用者和被调用者类名。使用文件“scenario.py”解释了该问题。所以我们可以看到,对于每个“emit”语句,我可以在运行时通过在“emit”语句上方添加一个 print 语句来打印出 Caller 类。但是另一方面的被调用者类是不可能的,因为我没有关于被调用者对象的信息以及它将被调用的函数。连接语句确实显示了被调用者类,但我需要在运行时检索信息,所以通常无法检索被调用者类?
#Scenario.py
class A (QObject):
def __init__(self):
QObject.__init__(self)
def afunc (self):
print self.__class__.__name__, "Printing" <-- Caller class is retrieved
self.emit(SIGNAL("Printing()"))
Class B:
def bfunc(self):
print "Hello World!"
if __name__=="__main__":
app=QCoreApplication(sys.argv)
a=A()
b=B()
QObject.connect(a,SIGNAL("Printing()"),b.bfunc)
a.afunc()
sys.exit(app.exec_())
Expected OutPut :
A Printing() B
那么是否可以在运行时检索一般的调用者类信息?上面的场景是一个示例代码。可能存在发出语句位于不同文件中而连接语句位于应用程序的不同文件中的情况。