Python 我可以创建一个非';你不是一个班里的一员吗?

Python 我可以创建一个非';你不是一个班里的一员吗?,python,pyqt4,signals-slots,qthread,Python,Pyqt4,Signals Slots,Qthread,因此,我能看到的使用PyQt4创建样式信号的唯一方法如下: class MyCustomClass(QtCore.QThread): custom_signal = QtCore.pyqtSignal(str) 我的不满是,如果我在其他任何地方声明该信号,pyqt就会向我抛出一个错误,说明自定义_信号没有connect()函数 当我想做一些简单的事情时,我想创建一个helper函数来帮助删除样板/重复代码:启动一个新线程,在该线程中工作,将结果作为信号发送给一个对象。但当我需要在类中定

因此,我能看到的使用PyQt4创建样式信号的唯一方法如下:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(str)
我的不满是,如果我在其他任何地方声明该信号,pyqt就会向我抛出一个错误,说明自定义_信号没有connect()函数


当我想做一些简单的事情时,我想创建一个helper函数来帮助删除样板/重复代码:启动一个新线程,在该线程中工作,将结果作为信号发送给一个对象。但当我需要在类中定义信号时,这很难


有没有办法让信号只是一个局部变量?

不确定我是否正确理解了你的问题,但从你的评论来看,定义一个适用于任何类型的信号就足够了?如果是这种情况,您可以使用对象作为类型:

class MyCustomClass(QtCore.QThread):
    custom_signal = QtCore.pyqtSignal(object)
简单测试:

>>> def callback(result):
...    print type(result)
...
>>> obj = MyCustomClass()
>>> obj.custom_signal.connect(callback)
>>> obj.custom_signal.emit('hello')
<type 'str'>
>>> obj.custom_signal.emit({'x': 1})
<type 'dict'>
def回调(结果): ... 打印类型(结果) ... >>>obj=MyCustomClass() >>>对象自定义信号连接(回调) >>>obj.custom_signal.emit('你好') >>>obj.custom_signal.emit({'x':1})
“但是当我需要在类中定义信号时,这很难。”为什么?我无法通过构造函数定义信号的类型。这意味着我需要有一个类集合来处理各种不同类型信号的组合。。。那么为什么不在所有事情上都使用object呢?我认为在(罕见的)情况下使用object是可以的,因为参数的类型并不重要。如果只有某些类型是可接受的,您可能应该将它们显式定义为重载,这样您就可以连接到适当的类型,而不必在回调中进行任何类型检查。