Update README.ru.rst

- Punctuation check and fix. 
- Replace some figures of speech.
This commit is contained in:
Serjio Razin 2019-02-11 16:27:35 +03:00 committed by Michael Howitz
parent 968277194d
commit 3042b9fa7c
1 changed files with 22 additions and 23 deletions

View File

@ -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)