我是试图学习Python的Java程序员,因此,我试图将这两种语言联系起来。
最近,我开始使用PyQt5库。我正在跟踪关于udemy的教程,我们在其中使用
custom_signal = pyqtSignal(str)
然后在我们的插槽中将数据作为字符串输入。如果我们使用
custom_signal = pyqtSignal(int)
然后数据将作为整数传递到插槽。
谁能解释我内部发生的事情。为什么我们将数据类型名称传递给类的构造函数(pyqtSignal(int))。它与Java中的泛型类型有关吗?
List<Integer> list = new ArrayList<Integer>();
由于上述变量仅接受整数,因此pyqtSignal(int)也与此类似吗?
有人可以对此进行解释吗?这可能很愚蠢,但我只是想了解内部发生的事情。我试图观看pyqtSignal类的源代码,但无法在任何地方在线找到相同的源代码。
任何人都可以告诉我在内部发生的对象创建过程,例如调用什么特殊方法(_new _,_ init_等)以及出于什么目的按什么顺序进行。
预先感谢
答案 0 :(得分:2)
实际上,pyqtSignal
是一家工厂,它使用您传递的参数来产生新的signal
。
工厂方法的定义如下:
PyQt5.QtCore.pyqtSignal(types[, name[, revision=0[, arguments=[]]]])
这意味着如果要定义一个名为rangeChanged
的信号,该信号需要两个整数参数,则可以执行以下操作:
range_changed = pyqtSignal(int, int, name='rangeChanged')
您可以了解有关该工厂here的更多信息。
关于dunder方法( __ 名称 __ )或以其他方式称为魔术方法-可以找到很好的解释here。