Как zope.interface.Interface может требовать реализации списка объектов, которые реализуют другой интерфейс? - PullRequest
2 голосов
/ 12 декабря 2011

В следующем примере я хочу, чтобы объекты, реализующие IParentInterface, требовали предоставления атрибута mycollection, представляющего собой список объектов, реализующих IChildInterface.

from zope.schema import Text, List
from zope.interface import Interface

class IChildInterface(Interface):
    someField = Text()

class IParentInterface(Interface):
    mycollection = List(value_type=IChildInterface)

Есть ли простой способ сделать это, или мне нужно использовать инварианты?

1 Ответ

4 голосов
/ 12 декабря 2011

Это должно работать:

from zope.schema import Text, List, Object
from zope.interface import Interface

class IChildInterface(Interface):
    someField = Text()

class IParentInterface(Interface):
    mycollection = List(value_type=Object(title=u'Child',
                                          schema=IChildInterface))
...