问题标签 [zope.interface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
plone - getMultiAdapter 失败并出现 ComponentLookupError
我有一个代码可以使用 get multi 适配器查找 iterface。传递给多适配器的元素成员之一是提供该接口,但不提供元素本身。
我无法控制传递给多适配器的内容,但我可以控制包含其中一个元素的元素。我该如何标记它?通知多适配器那里有一些有用的东西,是否有类似provideAdapterFactory(cls, interface)的东西?
代码示例:
声明
抬头
现在,如果我像这样运行代码,它将产生ComponentLookupError,同时我无法修改查找代码或多适配器,或者就此而言,我无法将 'implements(IMarker) 分配给 Parent,因为 parent 已经实现了不同的接口和会破坏很多其他的东西。
更新:
我想我已经从第 6.1 章多适配器中找到了一个我可以理解的解释
更新 2:我认为我没有在我的单元测试代码中正确初始化 zca,这是一个片段
python - 接口(obj)和getAdapter(obj,接口)之间的Zope组件差异
什么可能导致 Interface(obj) 返回 obj,而 getAdapter(obj, Interface) 返回一个经过适当调整的对象?
python - Zope 接口继承:为什么它没有出现在 interface.providedBy() 中?
我希望当我使接口IB
继承自IA
,然后用于查询(实现)interface.providedBy()
的实例时,我会在列表中看到和。然而,情况似乎并非如此。B
IB
IA
IB
运行此代码会产生以下输出:
如果B()
提供IA
,如输出的第一行所示,为什么没有IA
出现在输出的第二行?
更新:我通过使用以下解决方法解决了这个问题。我没有兴趣查看任何提供程序类、基类 (zope.interface.Interface) 或结果中的任何类型的重复项,所以我做了以下操作。
adapter - 我可以在 Z 中调整字符串和内置类型吗
我有一个接口,如:
我为 Git 和 Mercurial 实现了这个接口。现在我想编写存储库工厂,它接受一个字符串(路径)并返回一个 IRepository,通过探测它是一个存储库git
还是hg
存储库。
然而,简单地说:
不起作用,导致既不str
也不unicode
支持该IInterface
接口。
现在,我将使用:
但我想知道是否有只匹配字符串对象和其他 Python 内置类型的接口。
python - 如何使用 Python 的 twisted.internet 进行 XBMC 插件开发?
我只是尝试将 Python 模块twisted.internet
用于我目前正在编写的 XBMC 插件。当我尝试执行我的插件时,我遇到了一个我无法理解的异常。当我注意到以下几行引起了所有麻烦时,我感到非常惊讶:
问:我如何twisted
用于开发我的 XBMC 插件?任何帮助,将不胜感激!
不幸的是,我对 XBMC 和 XBMC 都是新手,twisted
而且我可以提供的细节很少。我认为插件没有在主线程中执行。我目前正在使用 XBMC 11 进行测试。(更新:我正在使用最新的 XBMC、Python 和 Debian 测试包twisted
。导入和使用该模块可通过常规脚本和 XBMC 服务工作,但不能来自 XBMC 脚本。)xbmc.log
文件中的堆栈跟踪是:
这是第一个相关的错误消息。
谢谢你的帮助!
python - python中zope.interface.registry中的导入错误
我正在虚拟环境中安装一个项目。我收到错误
此模块的版本为 4.0.5
我在我的机器上尝试了同样的方法(不是虚拟环境),
这里from zope.interface.registry import Components
没有给出任何错误。据此_
,它不应该给出任何错误。任何建议我在这里缺少什么或如何解决这个错误?
python - 与 zope 组件一起使用的 Python 源代码分析器
有一个广泛使用 zope 组件的代码库(Py 2.6 的东西),并且需要可以分析源代码的工具。该工具应该分析来源;比如寻找一些受限制的类/对象/接口等的使用。基本上,扫描源中的每个语句,同时了解语句的上下文(它在哪个类/方法/函数中,哪个模块等)并分析它具体模式。
将源读入文本缓冲区和匹配模式的方法似乎根本不是一种可靠的方法。
出现的另一种方法是使用inspect,但inspect 似乎被破坏并且似乎无法处理我们的代码库(多次尝试,所有这些都崩溃了 inspect)。我可能不得不放弃这一点,因为现在检查似乎有出路。
现在,我能想到的其他选项是使用pylint或使用AST(并对其进行大量后处理)。我不确定pylint的可扩展程度;在分析源语句时,pylint 是否可以知道上下文(即,哪个类定义/函数/方法具有此语句等)对于这样一个微不足道的目的,使用AST似乎太过分了。
您会在这里建议什么合适的方法?以前有其他人必须处理过这样的问题吗?
请建议。
python - 如何为接口动态添加属性
我需要为界面中的每个属性添加一个属性。所以我正在尝试动态修改它以添加它们,但目前没有太大成功。
假设我有以下界面:
我想这样修改它:
之后我尝试修改该类,但由于它已经初始化,因此设置了架构,我不知道如何更改它。我还考虑过编写一个指令(例如:interface.Implements()),但仅仅添加属性似乎相当复杂。
我的最终目标是添加一个带有一组 Bool 小部件的 z3c.form 字段集。
那么,有没有办法在 Python 中做到这一点,还是我必须修改界面并手动添加所有属性?
谢谢 !
zope.interface - 将 Zope 组件注册到 GlobalSiteManager 有什么意义?
我正在阅读关于 zope 组件架构的精彩教程:
http://www.muthukadan.net/docs/zca.html#adapters
我似乎无法理解适配器章节。
如我错了请纠正我。上面的类FrontDeskNG
是一个适配器,对吧?正如文章中所写:
FrontDeskNG 是 IDesk 的一个适配器,它适配了 IGuest
好的,现在我有了适配器,为什么我必须先注册它GlobalSiteManager
才能使用它?
我正在开发手机游戏后端,我想通过查看 Zope 组件架构来使代码更加模块化。我需要能够用任何数据库技术替换我的存储并且让代码仍然有效。这似乎是 ZCA 自豪地宣传的东西。我从未读过著名的 GoF 设计模式书,所以请多多包涵。
python - python 安装 zope.interface 模块,显示:AssertionError:尝试在没有 start_progress 的情况下结束进程
我使用 python,并且想在窗口 7 中安装模块 zope.interface,我使用了 cmd:
但控制台显示:
如果您对上述错误有任何解决方法,请告诉我。