关键词自我的重要性?

时间:2014-07-18 05:48:29

标签: python python-2.7 pyqt4

我正在阅读ZetCode关于PyQt4 GUI开发的教程。他为制作工具栏提供了以下代码 -

self.toolBar = self.addToolBar('Exit')`
self.toolBar.addAction(exitAction)

这将添加一个menuBar -

menuBar = self.menuBar()                                            
fileMenu = menuBar.addMenu('&File')
fileMenu.addAction(exitAction) 

self here是父类,它是QtGui.QMainWindow。

我不明白他为什么在第一个例子中使用self.toolBar但在第二个例子中没有使用self.menuBar。

4 个答案:

答案 0 :(得分:2)

在第二种情况下,menuBarself.menuBar()的引用,代码如下,

menuBar = self.menuBar()                                            
fileMenu = menuBar.addMenu('&File')
fileMenu.addAction(exitAction)

简单归结为

fileMenu = self.menuBar().addMenu('&File')
fileMenu.addAction(exitAction)

与您拥有的第一段代码没有区别

self.toolBar = self.addToolBar('Exit')`
self.toolBar.addAction(exitAction)

所以,如果你问

  

我不明白他为什么在第一个例子中使用self.toolBar但是   在第二个例子中没有使用self.menuBar。

它的编程风格和可读性从程序员到程序员各不相同。

答案 1 :(得分:1)

事实上,作者确实使用了self.menuBar()

menuBar = self.menuBar()

上述内容menuBar引用self.menuBar()返回的对象。

答案 2 :(得分:1)

menuBar = self.menuBar()                                            

这表明self已经感觉到它的菜单栏。这个方法调用可能会检索一个预先存在的对象,因此不需要将它存储在实例上,也不一定适合这样做(例如,它实际上是其他人&#39 ; s菜单栏和类正在操纵它。)

答案 3 :(得分:1)

在变量名称的开头添加self使其成为成员变量实例变量。创建mainWindow实例时,QMainWindow上已存在menuBar。因此,无需在成员变量中保存对menuBar的引用,因为只需调用self.menuBar(),您就可以随时在代码的任何部分检索它。另一方面,当你创建它时,mainWindow上不存在toolBar,你需要通过调用self.addToolBar()来添加它,并在成员变量中保存对toolBar的引用,以便在toolBar的任何部分执行操作。代码。