Персональные инструменты

Модуль interfaces

Автор: Ирина Бессарабова Последнее изменение: 2011-02-16 16:45

Модуль, в котором определяются интерфейсы пользовательских классов контента

Почему нужны интерфейсы?

Интерфейсы полезны для описания поведения класса. Это своего рода контракт между классом и компонентами, с которыми взаимодействует класс. Рекомендуется начинать разработку пакета с интерфейсов, так как это помогает документировать ваш код. В дополнение к вышесказанному, компонентная архитектура 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.

Действия с Документом