从属性对象内触发的事件调用类方法

Call class method from event triggered inside an attribute object

提问人:Oliver Mohr Bonometti 提问时间:9/13/2022 更新时间:9/13/2022 访问量:28

问:

我有一个类,它是类的属性。它有一个事件方法,该方法由不受我的程序控制的线程触发(当它收到来自外部源的消息时被激活。一个 swig “C++” 外部库控制它)。两者都在不同的模块中定义。ContainedClassContainerContainedClass

ContainedClass.py

class ContainedClass:
    def __init__(self):
        pass

    def on_message(self, message):
        pass # Executed on external thread

Container.py

class Container:
    def __init__(self, cc: ContainedClass, clients):
        self.cc = cc
        self.clients

    def do_stuff_on_cc_receiving_message(self):
        pass

可能不太优雅的解决方案:将参数传递给 。ContainerContainedClass

Python 事件 处理 python 多线程处理

评论

0赞 brunson 9/13/2022
如果需要,将容器传递给容器类并不是不优雅的。
0赞 Oliver Mohr Bonometti 9/13/2022
但这使 ContainedClass 成为 Container 类的容器类......我想有一个更好的解决方案。我什至无法输入提示它,因为已经并且将会有Container.pyimport ContainedClassContainedClass.pyimport Container
0赞 brunson 9/13/2022
是的,这将产生循环依赖关系。也许你需要重新设计模型,并将事件循环放在容器中而不是包含中,或者将它们放在同一个文件中。

答: 暂无答案