在Python中使用另一个类的实例属性

0 投票
1 回答
1995 浏览
提问于 2025-04-30 22:38

我想从一个类里访问另一个类的实例属性。我在想这个问题,感觉应该可以做到,但实际上却不行。你能帮我一下吗?

我需要从 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

传递给构造函数的变量在你类的其他地方是“超出范围”的,也就是说你不能在其他地方使用它。

撰写回答