Модуль interfaces
Модуль, в котором определяются интерфейсы пользовательских классов контента
Почему нужны интерфейсы?
Интерфейсы полезны для описания поведения класса. Это своего рода контракт между классом и компонентами, с которыми взаимодействует класс. Рекомендуется начинать разработку пакета с интерфейсов, так как это помогает документировать ваш код. В дополнение к вышесказанному, компонентная архитектура Zope (ZCA) позволяет использовать интерфейсы как компоненты для адаптации класса (что полезно, если требования к системе меняются со временем) и таким образом уточнять поведение класса.
Интерфейс класса InstantMessage
Сначала добавьте файл interfaces.py в корень пакета.
После чего нам нужно импортировать модель zope.interface (включен в поставку Zope версии 2.8 и выше):
from zope.interface import Interface
Следуя принятым в ZCA соглашениям для имен (имена интерфейсов начинаются с I), мы определим интерфейс IInstantMessage, который нужен для класса InstantMessage, определяемого позже:
class IInstantMessage(Interface):
"""
Interface for the InstantMessage class.
"""
И это все!
Мы могли бы добавить определения атрибутов, используя класс zope.interface.Attribute, но это необязательно. Интерфейс определенный выше, без функций или атрибутов, называется интерфейс-маркер (marker interface), что обозначает, что он используется только для маркировки экземпляров класса его реализующего.
Больше информации об интерфейсах можно получить из доктестов на Zope documentation site.

Предыдущий: Структура пакета
