Zope3.2
zope.interface はアダプタくらいまでしかなくて、factory class とか multi adapter とかは別の場所にある。なんだよこの構造は。
ファクトリの列挙は
from zope.app import component factories = list(component.getFactoriesFor(Interface))
ファクトリの登録は
<!-- from zope/app/schema/fields.zcml --> <content class="zope.schema.Text"> <factory id="zope.schema.Text" title="Text Field" description="Text Field" /> <implements interface="zope.schema.interfaces.IFromUnicode" /> <require like_class="zope.schema.MinMaxLen" /> <require like_class="zope.schema.Field" /> </content>
マルチアダプタの取得は
from zope.app import zapi multiapapter = zapi.getMultiAdapter((context1, context2, ), Interface)
マルチアダプタの登録は
<!-- from zope/app/form/browser/configure.zcml --> <view type="zope.publisher.interfaces.browser.IBrowserRequest" for="zope.schema.interfaces.IText" provides="zope.app.form.interfaces.IInputWidget" factory=".TextAreaWidget" permission="zope.Public" />