跳转到主要内容

适用于将任何对象适配到ITitle接口的适配器。

项目描述

此软件包实现了将任何对象适配到ITitle接口的适配器。

让我们导入我们稍后会用到的模块。

>>> import zope.interface
>>> import zope.component
>>> from zope.annotation.interfaces import IAttributeAnnotatable
>>> from zope.dublincore.interfaces import IZopeDublinCore
>>> from zope.container.interfaces import IContained
>>> from cykooz.title.interfaces import ITitle
>>> from cykooz.title import adapters

让我们注册适配器,这通常在configure.zcml中完成

>>> zope.component.provideAdapter(adapters.ClassName2TitleAdapter)
>>> zope.component.provideAdapter(adapters.Contained2TitleAdapter)
>>> zope.component.provideAdapter(adapters.ZDC2TitleAdapter)

实现测试对象

>>> class SomeClass(object):
...     zope.interface.implements(zope.interface.Interface)
>>> some_object = SomeClass()

从类名获取标题

>>> ITitle(some_object).title
u'SomeClass'

现在更改测试对象,使其提供IContained

>>> zope.interface.directlyProvides(some_object, IContained)
>>> some_object.__name__ = u'NameInContainer'
>>> ITitle(some_object).title
u'NameInContainer'

更改测试对象,使其仅提供IAttributeAnnotatable

>>> zope.interface.directlyProvides(some_object, IAttributeAnnotatable)
>>> IZopeDublinCore(some_object).title
u''

如果对象不提供IContained且IZopeDublinCore的‘title’字段为空,则ITitle适配器返回对象的类名

>>> ITitle(some_object).title
u'SomeClass'

现在更改测试对象,使其也提供IContained

>>> zope.interface.alsoProvides(some_object, IContained)
>>> ITitle(some_object).title
u'NameInContainer'

设置IZopeDublinCore的‘title’字段

>>> IZopeDublinCore(some_object).title = u'ZopeDublinCore Title'
>>> IZopeDublinCore(some_object).title
u'ZopeDublinCore Title'

测试适配器

>>> ITitle(some_object).title
u'ZopeDublinCore Title'

变更

1.0.0 (2011-03-14)

  • 首次发布

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

cykooz.title-1.0.0.tar.gz (4.8 kB 查看哈希值)

上传于 源代码

支持者