适用于将任何对象适配到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)
首次发布