NameError:未定义名称

时间:2017-08-16 18:11:35

标签: python variables global nameerror

更新的代码段: 我已经更新了自我。'约定而不是全局,但仍然有唯一的值返回在类级别上分配的空字符串,但如果删除它,则会引发错误。

class MainDialog(QWidget, qcDbWidget4.Ui_qcQueryWidget):

    dbDir = ''
    DbSelection = ''
    dbPath = ''
    TabSelection = ''
    exportDir = ''
    exportFileName = ''  

    def __init__(self, parent=None):
        super(MainDialog, self).__init__(parent)
        self.setupUi(self)
        self.connect(self.dbDirSelect, SIGNAL("clicked()"), self.getDirFileNames)
        self.connect(self.dbSelectButton, SIGNAL('clicked()'), self.selectDb)
        self.connect(self.tabSelectButton, SIGNAL('clicked()'), self.selectTab)
        self.connect(self.exportDirSelect, SIGNAL("clicked()"), self.getExportDir)
        self.connect(self.exportButton, SIGNAL("clicked()"), self.setExportName)
        self.connect(self.querySubmitButton, SIGNAL("clicked()"), self.setQueryParams)
        self.connect(self.querySubmitButton, SIGNAL("clicked()"), self.dbQuery)

    def getDirFileNames(self):
        self.dbDir = str(QFileDialog.getExistingDirectory(self))
        self.dbDirDisplay.setText(self.dbDir)

        dbFileList = []
        for root, dirs, files in os.walk(self.dbDir):
            for file in files:
                if file.endswith('.db'):
                    dbFileList.append(file)

        self.dbSelection.addItems(dbFileList)

1 个答案:

答案 0 :(得分:2)

在类级别定义变量时,如

class A(object):
    c = ''

你可以使用'c'作为静态类变量或实例变量(或两者兼而有之,但令人困惑)。如果要将其用作静态类变量,则需要将其用作A.c(整个类的静态变量,可在实例方法之外访问)。如果要将其用作实例变量,则需要使用self.c(每个实例都有自己的变量)。在这种情况下,c作为变量将不会被定义,如果您尝试使用global c,则应该有NameError。