【问题标题】:Can function pointers be used in python to reduce dependencies between classes?python中可以使用函数指针来减少类之间的依赖关系吗?
【发布时间】:2016-01-25 21:17:01
【问题描述】:

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

在python中使用函数指针来实现同样的事情是否合法?

假设我们的 MainFrame 只需要控制器的一个功能,你会在下面的代码中更改一些内容吗?是否存在一些潜在问题?

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

【问题讨论】:

  • 是的,这是可能的。您应该能够通过开槽继承来做到这一点

标签: python model-view-controller interface function-pointers


【解决方案1】:

这是一种完全合法的代码编写方式。这种类型的方法称为回调。请注意,在 Java 中,将接口用于此类事情的模式实际上是其历史限制的结果,即没有函数对象。 Python 没有这种缺陷,因此您的解决方案将有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多