在Python中使用另一个类的实例属性
我想从一个类里访问另一个类的实例属性。我在想这个问题,感觉应该可以做到,但实际上却不行。你能帮我一下吗?
我需要从 MainWidget 访问 MainWindow 里的 swidget 和 searchWidget。
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.mainWidget = MainWidget(self)
self.searchWidget = SearchWidget(self)
self.swidget = QStackedWidget()
self.swidget.addWidget(self.mainWidget)
self.swidget.addWidget(self.searchWidget)
self.setCentralWidget(self.swidget)
self.initUI()
...
还有 MainWidget 类的内容:
class MainWidget(QWidget):
def __init__(self, parent):
super(MainWidget,self).__init__(parent)
self.initUI()
def initUI(self):
...
def goSearch(self):
self.parent.swidget.setCurrentWidget(self.parent.searchWidget)
我在最后一行(def doSearch())遇到了问题。解释器提示:
File "/home/maze/Develop/StartApp/startapp.py", line 71, in goSearch
self.parent.swidget.setCurrentWidget(self.parent.searchWidget)
AttributeError: 'builtin_function_or_method' object has no attribute 'swidget'
我在这里做错了什么?谢谢你的帮助。
1 个回答
0
在你的 class MainWidget
的构造函数里,你需要加上这个:
self.parent = parent
传递给构造函数的变量在你类的其他地方是“超出范围”的,也就是说你不能在其他地方使用它。