gpt4 book ai didi

Python 对象组合 - 从调用它的类中访问方法

转载 作者:行者123 更新时间:2023-11-30 23:44:58 24 4
gpt4 key购买 nike

你必须原谅我,我正在尝试自学面向对象,但我遇到了组合和“has-a”关系的问题。

class Main(object):
def A(self):
print 'Hello'
def B(self):
self.feature = DoSomething()

class DoSomething(object):
def ModifyMain(self):
#Not sure what goes here... something like
Main.A()

def run():
M = Main()
M.B()

上述简化的一个真实示例是 PySide 应用程序,其中 Main 是 MainWindow,DoSomething 是放置在窗口中某处的动态创建的小部件。我希望 DoSomething 能够修改主窗口的状态栏,这本质上是调用(在主窗口中)self.statusbar()。

如果 PySide 中有一个快捷方式可以做到这一点,顶!请告诉我!然而,我实际上正在寻找更通用的 Pythonic 方法来做到这一点。

我想我已经很接近了......我只是无法让它发挥作用......

最佳答案

为什么不使用信号和槽呢?这是一种更加 Qt 和 OOP 的方法。

在动态创建的小部件类中:

self.modifyMain = QtCore.Signal(str)

在你的主类中:

@QtCore.Slot(str)
def changeStatusbar(self, newmessage):
statusBar().showMessage(newmessage)

创建小部件后在主类中:

doSomething.modifyMain.connect(self.changeStatusbar)

在你的小部件类中,你想更改 main 的状态栏,你可以说:

modifyMain.emit("Hello")

这些都没有经过测试,因为我手头没有 PySide 安装。

关于Python 对象组合 - 从调用它的类中访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com