Zope组件体系结构组件是否需要声明它实现的接口?

时间:2011-12-28 06:53:05

标签: python zope zope.interface zope.component

注意:我是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中的接口工作方式)?

1 个答案:

答案 0 :(得分:4)

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

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

还有一些函数可以检查组件是否实现了特定的接口,主要用于测试。

所以是的,ZCA中的接口与它们在Go中的作用非常相似,但是添加了一个组件注册表(除非Go有这个,但我错过了,我不是Go专家)你可以快速查看基于接口和名称的组件。