Update README.ru.rst
- Punctuation check and fix. - Replace some figures of speech.
This commit is contained in:
parent
968277194d
commit
3042b9fa7c
|
@ -310,7 +310,7 @@ supported in Python 2.6 and later.
|
|||
... def brag():
|
||||
... "Brag about being special"
|
||||
|
||||
Мы можем сделать созданный экземпляр foo специальным предоставив атрибуты
|
||||
Мы можем сделать созданный экземпляр foo специальным, предоставив атрибуты
|
||||
`reason` и `brag`::
|
||||
|
||||
>>> foo.reason = 'I just am'
|
||||
|
@ -403,7 +403,7 @@ supported in Python 2.6 and later.
|
|||
Объекты объявлений
|
||||
------------------
|
||||
|
||||
Когда мы объявляем интерфейсы мы создаем объект *объявления*. Когда мы
|
||||
Когда мы объявляем интерфейсы, мы создаем объект *объявления*. Когда мы
|
||||
запрашиваем объявления возвращается объект объявления::
|
||||
|
||||
>>> type(zope.interface.implementedBy(Special))
|
||||
|
@ -411,7 +411,7 @@ supported in Python 2.6 and later.
|
|||
|
||||
Объекты объявления и объекты интерфейсов во многом похожи друг на друга.
|
||||
На самом деле они даже имеют общий базовый класс. Важно понять, что они могут
|
||||
использоваться там где в объявлениях ожидаются интерфейсы. Вот простой
|
||||
использоваться там, где в объявлениях ожидаются интерфейсы. Вот простой
|
||||
пример::
|
||||
|
||||
>>> class Special2(Foo):
|
||||
|
@ -467,7 +467,7 @@ supported in Python 2.6 and later.
|
|||
>>> IBaz['eek'].__doc__
|
||||
'eek in baz blah'
|
||||
|
||||
Мы были осторожны переопределяя eek совместимым путем. Когда интерфейс
|
||||
Мы были осторожны, переопределяя eek совместимым путем. Когда интерфейс
|
||||
расширяется, расширенный интерфейс должен быть совместимым [#compat]_ с
|
||||
расширяемыми интерфейсами.
|
||||
|
||||
|
@ -483,8 +483,7 @@ supported in Python 2.6 and later.
|
|||
>>> IBaz.extends(IBaz)
|
||||
False
|
||||
|
||||
Иногда мы можем хотеть что бы они расширяли сами себя, но вместо этого
|
||||
мы можем использовать `isOrExtends`::
|
||||
Если мы хотим видеть, что интерфейс расширяет сам себя,то мы можем использовать `isOrExtends`::
|
||||
|
||||
>>> IBaz.isOrExtends(IBaz)
|
||||
True
|
||||
|
@ -494,7 +493,7 @@ supported in Python 2.6 and later.
|
|||
False
|
||||
|
||||
Когда мы применяем итерацию к интерфейсу мы получаем все имена которые он
|
||||
определяет включая имена определенные для базовых интерфейсов. Иногда
|
||||
определяет, включая имена определенные для базовых интерфейсов. Иногда
|
||||
мы хотим получить *только* имена определенные интерфейсом напрямую.
|
||||
Для этого мы используем метод `names`::
|
||||
|
||||
|
@ -505,7 +504,7 @@ supported in Python 2.6 and later.
|
|||
--------------------------------------------
|
||||
|
||||
Интерфейс может переопределять определения атрибутов из базовых интерфейсов.
|
||||
Если два базовых интерфейса определяют один и тот же атрибут атрибут
|
||||
Если два базовых интерфейса определяют один и тот же атрибут, то данный атрибут
|
||||
наследуется от более специфичного интерфейса. Для примера::
|
||||
|
||||
>>> class IBase(zope.interface.Interface):
|
||||
|
@ -533,7 +532,7 @@ IBase::
|
|||
Заметим, что это отличается от поиска в глубину.
|
||||
|
||||
Иногда полезно узнать, что интерфейс определяет атрибут напрямую. Мы можем
|
||||
использовать метод direct для получения напрямую определенных атрибутов::
|
||||
использовать метод `direct` для получения напрямую определенных атрибутов::
|
||||
|
||||
>>> IBase.direct('foo').__doc__
|
||||
'base foo doc'
|
||||
|
@ -577,8 +576,8 @@ IBase::
|
|||
Помеченные значения
|
||||
===================
|
||||
|
||||
Интерфейсы и описания атрибутов поддерживают механизм расширения
|
||||
заимствованный из UML и называемый "помеченные значения" который позволяет
|
||||
Интерфейсы и описания атрибутов поддерживают механизм расширения,
|
||||
заимствованный из UML и называемый "помеченные значения", который позволяет
|
||||
сохранять дополнительные данные::
|
||||
|
||||
>>> IFoo.setTaggedValue('date-modified', '2004-04-01')
|
||||
|
@ -593,7 +592,7 @@ IBase::
|
|||
>>> tags
|
||||
['author', 'date-modified']
|
||||
|
||||
Атрибуты функций конвертируются в помеченные значения когда создаются
|
||||
Атрибуты функций конвертируются в помеченные значения, когда создаются
|
||||
определения атрибутов метода::
|
||||
|
||||
>>> class IBazFactory(zope.interface.Interface):
|
||||
|
@ -615,10 +614,10 @@ IBase::
|
|||
Инварианты
|
||||
==========
|
||||
|
||||
Интерфейсы могут описывать условия которые должны быть соблюдены для объектов
|
||||
которые их предоставляют. Эти условия описываются используя один или более
|
||||
инвариантов. Инварианты - это вызываемые объекты которые будут вызваны
|
||||
с объектом предоставляющим интерфейс в качестве параметра. Инвариант
|
||||
Интерфейсы могут описывать условия, которые должны быть соблюдены для объектов,
|
||||
которые их предоставляют. Эти условия описываются одним или несколькими
|
||||
инвариантами. Инварианты - это вызываемые объекты, которые будут вызваны
|
||||
с объектом, предоставляющим интерфейс в качестве параметра. Инвариант
|
||||
должен выкинуть исключение `Invalid` если условие не соблюдено. Например::
|
||||
|
||||
>>> class RangeError(zope.interface.Invalid):
|
||||
|
@ -630,7 +629,7 @@ IBase::
|
|||
... if ob.max < ob.min:
|
||||
... raise RangeError(ob)
|
||||
|
||||
Определив этот инвариант мы можем использовать его в определении интерфейсов::
|
||||
Определив этот инвариант, мы можем использовать его в определении интерфейсов::
|
||||
|
||||
>>> class IRange(zope.interface.Interface):
|
||||
... min = zope.interface.Attribute("Lower bound")
|
||||
|
@ -657,7 +656,7 @@ IBase::
|
|||
RangeError: Range(2, 1)
|
||||
|
||||
В случае нескольких инвариантов мы можем захотеть остановить проверку после
|
||||
первой ошибки. Если мы передадим в `validateInvariants` пустой список тогда
|
||||
первой ошибки. Если мы передадим в `validateInvariants` пустой список, тогда
|
||||
будет выкинуто единственное исключение `Invalid` со списком исключений
|
||||
как аргументом::
|
||||
|
||||
|
@ -680,7 +679,7 @@ IBase::
|
|||
=========
|
||||
|
||||
Интерфейсы могут быть вызваны для осуществления адаптации. Эта семантика
|
||||
основана на функции adapt из PEP 246. Если объект не может быть адаптирован
|
||||
основана на функции adapt из PEP 246. Если объект не может быть адаптирован,
|
||||
будет выкинут TypeError::
|
||||
|
||||
>>> class I(zope.interface.Interface):
|
||||
|
@ -696,7 +695,7 @@ IBase::
|
|||
>>> I(0, 'bob')
|
||||
'bob'
|
||||
|
||||
Если объект уже реализует нужный интерфейс он будет возвращен::
|
||||
Если объект уже реализует нужный интерфейс, он будет возвращен::
|
||||
|
||||
>>> class C(object):
|
||||
... zope.interface.implements(I)
|
||||
|
@ -745,7 +744,7 @@ __adapt__
|
|||
Интерфейсы реализуют метод __adapt__ из PEP 246. Этот метод обычно не
|
||||
вызывается напрямую. Он вызывается архитектурой адаптации из PEP 246 и методом
|
||||
__call__ интерфейсов. Метод адаптации отвечает за адаптацию объекта к
|
||||
получателю. Версия по умолчанию возвращает None::
|
||||
получателю. Версия по умолчанию возвращает `None`::
|
||||
|
||||
>>> I.__adapt__(0)
|
||||
|
||||
|
@ -761,7 +760,7 @@ __call__ интерфейсов. Метод адаптации отвечает
|
|||
Функции для вызова адаптации могут быть добавлены (или удалены) для
|
||||
предоставления адаптации "на заказ". Мы установим глупую функцию которая
|
||||
адаптирует 0 к 42. Мы устанавливаем функцию просто добавляя ее к списку
|
||||
adapter_hooks::
|
||||
`adapter_hooks`::
|
||||
|
||||
>>> from zope.interface.interface import adapter_hooks
|
||||
>>> def adapt_0_to_42(iface, obj):
|
||||
|
@ -772,7 +771,7 @@ adapter_hooks::
|
|||
>>> I.__adapt__(0)
|
||||
42
|
||||
|
||||
Функции должны возвращать либо адаптер, либо None если адаптер не найден.
|
||||
Функции должны возвращать либо адаптер, либо `None`, если адаптер не найден.
|
||||
Функции могут быть удалены удалением их из списка::
|
||||
|
||||
>>> adapter_hooks.remove(adapt_0_to_42)
|
||||
|
|
Loading…
Reference in New Issue