我可以在Z中调整字符串和内置类型吗?

时间:2013-01-07 22:43:37

标签: adapter zope zope.interface

我有一个类似的界面:

class IRepository(Interface):
    def __init__(path, **options):
        pass

我为Git和Mercurial都实现了这个接口。现在我想编写获取字符串(路径)并返回IRepository的repository-factory,通过探测它是git还是hg存储库。

然而,只是说:

registerAdapter(repofactory, (str, unicode, ), IRepository)

不起作用,导致strunicode都不支持IInterface界面。

现在,我要去:

registerAdapter(repofactory, (Interface, ), IRepository)

但我想知道是否有接口只匹配字符串对象和其他Python内置类型。

1 个答案:

答案 0 :(得分:0)

不,字符串和unicode对象不能有接口。但对于这个用例,我会注册命名的实用程序,并按名称查找实用程序,或列出所有可用的实用程序:

from zope.component import getUtilitiesFor, getUtility

names = [name for name, utility in getUtilitiesFor(IRepository)]

gitrepo = getUtility(IRepository, name='git')
相关问题