regallЯ как раз разбираюсь с модулем на twisted. Называется fats. И читал, что используется для документации. Но вот как именно? Можно живой пример в несколько строк.
1. Это реализация шаблона “Интерфейс” не на уровне интерпретатора, а средствами языка.
2. Удобное средство документирования кода, в т.ч. генерации документации.
3. Используется в фреймворке Twisted для см. пункт 2
4. Используется как основа для компонентной архитектуры ZCA.
… и еще, наверное, где-то =)
regallСейчас читаю книжку по twisted, но там Interface не упоминается или я еще не дошел до той страницы))
Не совсем понял, что вы хотите узнать ) Пример использования fats или пример использования интерфейсов?
ЮрчекПо большому счету для разработки на twisted вам знать про zope.interface ничего не нужно.
Сейчас читаю книжку по twisted, но там Interface не упоминается или я еще не дошел до той страницы))
ЮрчекЕсли вы захотите предоставить свою реализацию этого сервиса, вас следует глянуть в интерфейс и просто релизовать все методы, которые присутствуют в интерфейсе. Это есть достаточное уловие для того (если вы все правильно реализовали), что ваша реализация может быть использована взамен стандартной.
Зачем там IHelloFastAGIService? Что он делает? Можно же и без него. Я не понимаю, какое преимущество он дает.
components.registerAdapter(HelloFastAGIFactoryFromService,
IHelloFastAGIService,
IFastAGIFactory)
IFastAGIFactory(some_class)
ЮрчекВерно.
Потом я могу подменить реализацию этого интерфейса а тот код, который его использует продолжить работать.
ЮрчекВ питоне практически все можно во время выполнения, но только делать этого не надо :) zope.interface это программная реализация шаблона Интерфейс с доп. плюшками типа интроспекции, а вот подменять ничего не надо.
А с zope.Interface это можно делать динамически прямо во время выполнения?