Python中的名称错误' self'定义

时间:2016-10-05 14:18:54

标签: python linux

在下面分享的python代码中获取Name Error:。我是Python的初学者。

from PyQt4 import QtGui, QtCore
import sys
import I2CGenericFrame
import os

class I2CApp(QtGui.QMainWindow, I2CGenericFrame.Ui_winI2CMain):
    def __init__(self):
        super(self.__class__, self).__init__()
        self.setupUi(self)


    self.cmbBusListBox.addItem("Slect ..")

出现以下错误。

Traceback (most recent call last):
  File "I2cMain.py", line 6, in <module>
    class I2CApp(QtGui.QMainWindow, I2CGenericFrame.Ui_winI2CMain):
  File "I2cMain.py", line 12, in I2CApp
    self.cmbBusListBox.addItem("Slect ..")
NameError: name 'self' is not defined

指导我,提前致谢。

2 个答案:

答案 0 :(得分:1)

self是一个参数,就像在方法中传递的任何其他参数一样。它在方法之外的类体中没有任何意义。

您可以通过修复缩进来解决此问题,以便在__init__方法中引用它:

class I2CApp(QtGui.QMainWindow, I2CGenericFrame.Ui_winI2CMain):
    def __init__(self):
        super(I2CApp, self).__init__()
        self.setupUi(self)
        self.cmbBusListBox.addItem("Slect ..")

编辑:如评论中所示,您还应该明确地使用类调用super,以避免无限递归的可能性。

答案 1 :(得分:0)

当您从对象调用变量时,变量self会自动传递给方法。您的代码行self.cmbBusListBox.addItem("Slect ..")未包含在类的方法中,因此它不知道self是什么。这可能是缩进错误。您打算将其置于__init__下吗?

相关问题