【问题标题】:Does a Zope Component Architecture component need to state the interfaces it implements?Zope 组件架构组件是否需要声明它实现的接口?
【发布时间】:2012-01-28 23:35:54
【问题描述】:

注意:我是 ZCA 的新手,所以代码可能不正确;不过,我对 ZCA 的工作方式有点熟悉。

例如:

class I1(Interface):
    def c1():
        pass

class U1(object):
    implements(I1) #is this necessary?
    def c1():
        #do some things here

是否需要 implements(I1) 行,或者 ZCA 是否可以自行确定 U1 实现了 I1(有点像 Go 中的接口工作方式)?

【问题讨论】:

    标签: python zope zope.interface zope.component


    【解决方案1】:

    组件不需要声明它。当组件注册在组件注册表中时,组件的接口最为重要,因为组件查找是在接口上完成的。

    您可以通过多种方式告诉组件注册表组件实现了哪个接口。一种方法,最常见的方法是对组件本身使用 implements() 调用。你也可以在注册组件的时候告诉组件注册表它实现了哪些接口。

    还有用于检查组件是否实现特定接口的功能,主要用于测试。

    所以是的,ZCA 中的接口的工作方式与 Go 中的一样,但添加了一个组件注册表(除非 Go 有它,但我错过了它,我不是 Go 专家),你可以快速查看根据接口和名称构建组件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2019-12-28
      相关资源
      最近更新 更多