对动态模块的低级支持
项目描述
你现在看到了它,现在又看不到了!
此包定义了一种动态模块类型,允许您根据需要动态模块中创建对象。
用法
要使用此包,您应该
识别一个适当的父模块,其中将包含动态模块。
确保使用 plone.alterego.dynamic.create() 调用此模块和动态模块名称。通常,您会在父模块本身中这样做,以便在导入父模块时立即实例化动态模块。
注册一个名为 IDynamicObjectFactory 的命名实用工具。该名称应与动态模块的完整点路径相同。此实用工具将负责创建居住在动态模块中的对象。
示例
有关更全面的示例,请参阅 alterego.txt doctest。
假设我们有一个通用内容类,它应该为每个实例获得一个唯一的接口。
>>> from zope import interface
>>> class IContent(interface.Interface):
... pass
>>> class Content(object):
... interface.implements(IContent)
>>> c1 = Content()
要创建唯一的接口,我们将使用动态模块。有一个辅助方法可以简化这个过程。它接受父模块和名称作为参数
>>> from plone.alterego.dynamic import create
>>> dynamic = create('plone.alterego.tests.dynamic')
现在我们可以导入此模块
>>> from plone.alterego.tests import dynamic
为了根据需要创建对象,我们需要注册一个可以充当工厂的实用工具。
>>> from plone.alterego.interfaces import IDynamicObjectFactory
>>> from zope.interface.interface import InterfaceClass
>>> class InterfaceOnDemand(object):
... interface.implements(IDynamicObjectFactory)
...
... def __call__(self, name, module):
... schema = InterfaceClass(name, (interface.Interface,), __module__=module.__name__)
... setattr(module, name, schema)
... return schema
此实用工具的名称应与动态模块的完整点名称相对应。这样,我们可以为不同的动态模块拥有不同的工厂。我们将在 ZCML 中注册如下
<utility
name="plone.alterego.tests.dynamic"
provides="plone.alterego.interfaces.IDynamicObjectFactory"
factory=".factory.InterfaceOnDemand"
/>
从现在开始,当我们访问动态模块的属性时,将使用工厂
>>> dynamic.IOne
<InterfaceClass plone.alterego.tests.dynamic.IOne>
请注意,只要上面的 setattr() 调用执行,工厂就只会被调用一次。也就是说,每次访问动态模块的给定属性时,您都将获得相同的对象。
变更日志
2.0.1 (2024-01-19)
内部
更新配置文件。[plone 开发者] (237ff4c8)
2.0.0 (2023-04-15)
重大变更
删除 Python 2 支持。[gforcada] (#1)
1.1.6 (2023-04-15)
内部
更新配置文件。[plone 开发者] (5623f8b3)
1.1.5 (2020-04-20)
错误修复
小的打包更新。(#1)
1.1.4 (2020-03-21)
错误修复
小的打包更新。[各种] (#1)
1.1.3 (2018-11-21)
错误修复
清理项目级文件(setup.py、.travis-ci.yml...)[maurits] [gforcada] (#2524)
初始化 towncrier。[gforcada] (#2548)
1.1.3(未发布)
1.1.2 (2018-11-21)
错误修复
更新代码以遵循 Plone 风格指南。[gforcada]
1.1 (2016-11-01)
新功能
添加与 Python 3 的兼容性。[datakurre]
1.0.1 (2016-08-11)
修复
使用 zope.interface 装饰器。[gforcada]
1.0 (2011-04-30)
使用 stdlib 中的 doctest 而不是 zope.testing 中的 doctest。[davisagli]
1.0a1(2009-04-17)
初始发布。
项目详情
下载文件
下载适合您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建版本
plone.alterego-2.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b59b103df670e6fbe2950df859a70447b9ccd60b86ba87e838efeb11b13a9ec6 |
|
MD5 | 26332f28ff1ed173045de184094cbbfd |
|
BLAKE2b-256 | 788b8491a330d13510c81da97485771f261a0bc230526a8c318662db3da3ae74 |
plone.alterego-2.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e161e62d803f3468e86917a0233b29a590b575b21afa6842ef69d783fa08405a |
|
MD5 | 9a269c5f920bc5f2e9264b70a459a4f6 |
|
BLAKE2b-256 | 134e99bb16a38772b09d87663090d4afc954d74d80b43634d38e89857949e6a1 |