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