首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取实现接口的类的列表?(zope.interface)

如何获取实现接口的类的列表?(zope.interface)
EN

Stack Overflow用户
提问于 2011-08-06 05:13:22
回答 2查看 1.4K关注 0票数 5

这个问题说明了一切。或者我试图将zope.interface用于错误的目的?

我需要的基本上是注册实现特定功能的类(CMS的小部件或Portlet)的一种方法。基本上就像django使用它的ModelAdmin类一样,但不是自动的,也不是魔术的。

EN

回答 2

Stack Overflow用户

发布于 2011-08-06 20:07:13

这就是zope.component架构所解决的问题,但是您必须注册接口的所有使用。zope.interface本身并不跟踪哪些对象实现了给定的接口。

您正在寻找的是utility registrations;由接口定义的给定服务的所有实现。

票数 3
EN

Stack Overflow用户

发布于 2016-02-14 17:17:06

最简单的方法是修饰zope.interface.declarations.classImplements (及其别名zope.interface.classImplements)。

代码语言:javascript
复制
from zope import interface as i
from collections import defaultdict
oclassImplements = i.classImplements
registry = defaultdict(list)
def classImplements(cls, *interfaces):
    for a in interfaces:
        registry[a].append(cls)
    return oclassImplements(cls, *interfaces)
i.classImplements = i.declarations.classImplements = classImplements

请注意,您必须在实现要捕获的接口之前执行此操作,通常最好在导入任何其他接口之前执行此操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6962712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档