Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 名称错误:未定义名称_Python_Variables_Global_Nameerror - Fatal编程技术网

Python 名称错误:未定义名称

Python 名称错误:未定义名称,python,variables,global,nameerror,Python,Variables,Global,Nameerror,更新的代码段: 我已更新为“self.”约定,而不是全局约定,但仍然只有在类级别上分配的空字符串返回唯一值,但如果删除该值,则会引发错误 class MainDialog(QWidget, qcDbWidget4.Ui_qcQueryWidget): dbDir = '' DbSelection = '' dbPath = '' TabSelection = '' exportDir = '' exportFileName = ''

更新的代码段: 我已更新为“self.”约定,而不是全局约定,但仍然只有在类级别上分配的空字符串返回唯一值,但如果删除该值,则会引发错误

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)

在类级别定义变量时,如

class A(object):
    c = ''

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

哪一行返回错误?您还看到了哪些其他答案?不要使用
global
。您可能正在查找
self.qcLevelCode
。它似乎来自:queryStatement=“SELECT*from”+qcTabSelect+“其中”+qcLevelSelect指向底部我尝试了self.qcLevelCode,但它返回我设置为占位符的空字符串,而不是qcLevelDbQuery方法中的全局重新分配。名称错误:未定义名称“qcLevelCode”,这是因为您需要将所有引用从
global x
更改为
self.x
,包括在
qcLevelDbQuery
中。您的代码不包含全局变量。我一直抛出一个错误,即如果最初未在类级别定义变量,则未定义该变量,然后将其设置为全局以进行重新分配。如何将变量定义为实例、赋值,然后在同一类中的另一个方法中引用?self.qcLevelCode将等于已定义的值(“”在您的情况下),除非您在某个地方为其赋值。它可以在
\uuuu init\uuuu
构造函数中完成。在任何具有类似于
self.qcLevelCode=“LCU”
语句的方法中,或者如果您已将实例分配给某个变量,如
inst
inst.qcLevelCode=“LCU”