Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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_Qt_Pyqt_Pyqt4 - Fatal编程技术网

Python 对象中的列表会记住它';在创建新成员后删除成员

Python 对象中的列表会记住它';在创建新成员后删除成员,python,qt,pyqt,pyqt4,Python,Qt,Pyqt,Pyqt4,在根类中,每次按下F3键时,我都会创建新对象: 类浏览器(QtGui.QMainWindow): indexlist=None 一些代码 def keyPressEvent(self,keyEvent): 如果keyEvent.key()==QtCore.Qt.key\u F3: keyEvent.accept() self.indexlist=self.ui.treeView.selectedIndexes() compareWin=CompareBox(self.indexlist,self

在根类中,每次按下F3键时,我都会创建新对象:


类浏览器(QtGui.QMainWindow):
indexlist=None
一些代码
def keyPressEvent(self,keyEvent):
如果keyEvent.key()==QtCore.Qt.key\u F3:
keyEvent.accept()
self.indexlist=self.ui.treeView.selectedIndexes()
compareWin=CompareBox(self.indexlist,self)
如果比较in.error==1:
self.indexlist=None
其他:
self.indexlist=None
比较设置模式(True)
在.show()中进行比较

我有一门课:


类比较框(QtGui.QDialog):
参数列表=[]
def\uuuu init\uuuu(self,indexlist=None,parent=None):
一些现在的代码
self.parameterlist.append(someobject)
又是一些代码
self.parameterlist=[]
self.close()


当我的应用程序工作时,我会重复创建这些对象,每次创建新对象时,它都会记住上一个对象中的parameterlist成员。 我试过:del(parameterlist)
,但没用。
我还注意到,这些对象的析构函数只有在应用程序关闭时才被调用。但我的朋友告诉我,这是用来检查对话框窗口结束方式的Qt特性。我必须承认,我非常困惑,完全不知道发生了什么。

您在类中所关心的参数列表对于您创建的每个实例都是相同的

您应该尝试以下方法:

class CompareBox(QtGui.QDialog):
    def __init__(self, indexlist=None, parent=None):
        some code now then
        self.parameterlist = []
        self.parameterlist.append(someobject) 
        again some code 
        self.close()

对于创建的每个实例,您在类中创建的参数列表都是相同的

您应该尝试以下方法:

class CompareBox(QtGui.QDialog):
    def __init__(self, indexlist=None, parent=None):
        some code now then
        self.parameterlist = []
        self.parameterlist.append(someobject) 
        again some code 
        self.close()

您使用的是类变量而不是实例变量。不要在类主体中初始化
paramrist
,而是在构造函数中使用
self.parameterlist=[]
。非常感谢,我知道我的错误一定很简单,但我没有想到这一点。非常感谢。您使用的是类变量而不是实例变量。不要在类主体中初始化
paramrist
,而是在构造函数中使用
self.parameterlist=[]
。非常感谢,我知道我的错误一定很简单,但我没有想到这一点。非常感谢。