Zope接口继承:为什么它没有出现在接口提供方()?

2024-06-16 10:48:10 发布

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

我希望当我使一个接口IB继承自IA,然后使用interface.providedBy()查询{}(实现{})的实例时,我会在列表中同时看到IA和{}。然而,情况似乎并非如此。在

from zope import interface

class IA(interface.Interface):
    pass

class IB(IA): # We inherit from IA
    pass

class B(object):
    interface.implements(IB)

if __name__ == '__main__':
    b = B()
    print 'Does B() provide IA? %s' % IA.providedBy(b)
    print 'providedBy(B()): %s' % list(interface.providedBy(b))

运行此代码将生成以下输出:

^{pr2}$

如果B()提供IA,如输出的第一行所示,为什么{}不出现在输出的第二行?在

更新:我使用以下解决方法解决了这个问题。我不想看到任何提供程序类,基类(zope.interface.interface接口)或者任何重复的结果,所以我做了下面的工作。在

^{3}$

Tags: 实例fromimportzope列表情况passinterface