在Python中将原始数据类型名称作为函数参数传递

时间:2018-09-07 10:25:35

标签: python python-3.x pyqt5

我是试图学习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_等)以及出于什么目的按什么顺序进行。

预先感谢

1 个答案:

答案 0 :(得分:2)

实际上,pyqtSignal是一家工厂,它使用您传递的参数来产生新的signal

工厂方法的定义如下:

PyQt5.QtCore.pyqtSignal(types[, name[, revision=0[, arguments=[]]]])

这意味着如果要定义一个名为rangeChanged的信号,该信号需要两个整数参数,则可以执行以下操作:

range_changed = pyqtSignal(int, int, name='rangeChanged')

您可以了解有关该工厂here的更多信息。

关于dunder方法( __ 名称 __ )或以其他方式称为魔术方法-可以找到很好的解释here