函数指针可以在python中用来减少类之间的依赖关系吗?

2024-06-26 04:14:48 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,在Java等语言中,在一些MVC模式中,使用接口减少类之间的耦合是很常见的。你知道吗

在python中,使用函数指针来实现相同的目标是否合法?你知道吗

假设我们的主机只需要控制器的一个功能,您是否可以更改下面代码中的某些内容,是否存在一些潜在的问题?你知道吗

class MainFrame(object):

    def __init__(self):
        self._listeners = []

    def fireEvent(self):
        for l in self._listeners:
            l()

    def addListener(self, funcPtr):
        self._listeners.append(funcPtr)


class Controller(object):

    def __init__(self):
        pass

    def eventRised(self):
        print "controller recived event"

def main():

    m = MainFrame()

    c = Controller()

    m.addListener(c.eventRised)

    m.fireEvent()

if __name__ == '__main__':
    main()

程序输出为:

controller recived event

Tags: selfobjectinitmaindefclasscontrollerlisteners
1条回答
网友
1楼 · 发布于 2024-06-26 04:14:48

这是一种完全合法的代码编写方式。这种类型的方法称为回调。请注意,在Java中,使用接口进行类似操作的模式实际上是其历史局限性的结果,即没有函数对象。Python没有这个缺陷,所以您的解决方案可以工作。你知道吗

相关问题 更多 >