Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [ 48 ] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

coerce (self, other)

Вызывается для приведения операндов к общему11 типу. Должен возвращать кортеж, содержащий self и other, приведенные к общему типу, или None, если осуществить преобразование невозможно. В тех случаях, когда общий тип будет типом второго аргумента (other), эффективнее вернуть None, так как интерпретатор также будет пытаться вызвать метод coerce второго аргумента (иногда, однако, реализация другого типа не может быть изменена, в этом случае полезно осуществить приведение к типу второго аргумента здесь).

add ( self, other)

sub ( self, other)

mul ( self, other)

div ( self, other)

mod ( self, other)

divmod ( self, other)

pow (self, other [, modulo])

lshift ( self, other) rshift ( self, other) and ( self, other) xor ( self, other)

or ( self, other)

Вызываются (для правого операнда) для реализации бинарных операторов +, -, *, /, %, встроенной функции divmod(), оператора ** и встроенной функции pow(), операторов <<, >>, &, и соответственно. Например, для того чтобы вычислить выражение x+ y, где x является экземпляром класса, имеющим метод add ,

11Иногда полезно возвратить значения разного типа, например список и целое число.

3. Если y является экземпляром класса:

(a) Если для y определен метод coerce (), x и y заменяются значениями, содержащимися в кортеже x. coerce (y); если же метод

coerce () возвращает None, перейти к пункту 4.

(b) Если после преобразований ни x, ни y не является экземпляром, перейти к пункту 4.

(c) Если для y определен метод rop , вернуть y. rop (x), в противном

случае восстановить значения x и y, которые были перед выполнением пункта 3a.

4. (a) Если x является последовательностью и op - + или *, выполняется объеди-

нение и размножение соответственно.

(b) В противном случае оба операнда должны быть числами. По возможности они приводятся к общему типу, и для этого типа выполняется соответствующая операция.



вызывается x. add (y). Обратите внимание, что, если должен поддерживаться вызов встроенной функции pow() с тремя аргументами, метод pow ()

должен быть определен с третьим необязательным аргументом.

radd ( self, other) rsub ( self, other) rmul ( self, other) rdiv ( self, other) rmod ( self, other) rdivmod ( self, other) rpow ( self, other) rlshift ( self, other) rrshift ( self, other) rand ( self, other) rxor ( self, other)

ror ( self, other)

Вызываются (для левого операнда) для реализации перечисленных выше операций, если правый операнд не имеет соответствующего метода (без буквы r ). Например, для того чтобы вычислить выражение x-y, где y является экземпляром класса,

имеющим метод rsub , вызывается y. rsub (x). Обратите внимание, что

функция pow() , вызванная с тремя аргументами, не будет пытаться использовать метод rpow () (правила приведения типов были бы слишком сложными).

iadd ( self, other) isub ( self, other) imul ( self, other) idiv ( self, other) imod ( self, other) ipow ( self, other) ilshift ( self, other) irshift ( self, other) iand ( self, other) ixor ( self, other)

ior ( self, other)

Вызываются для реализации операций с присваиванием (изменением исходного объекта) +=, -=, *=, /=, %=, **= <<=, >>=, &=, = и = соответственно. Эти методы должны не возвращать результат, а модифицировать объект, к которому метод применяется. Если соответствующий метод не определен, операция x op= y выполняется как x = x op y .



Объекты типа file создаются встроенной функцией open() (см. главу 12), а также с помощью функций os.popen() и os.fdopen() (см. описание модуля os). Кроме того, различные модули предоставляют пути создания объектов с аналогичным интерфейсом (например, метод makefile() объектов, представляющих сетевое соединение). Переменные sys.stdin, sys.stdout и sys.stderr (см. описание модуля sys) инициализируются файловыми объектами, соответствующими стандартным потокам ввода, вывода и ошибок.

Если при выполнении операции над объектом-файлом возникает ошибка ввода-вывода, включая ситуации, при которых по каким-либо причинам операция не определена (например, метод seek() файлового объекта, представляющего устройство tty, или запись в файл, открытый для чтения), генерируется исключение IOError.

Объекты file имеют следующие методы:

close()

Закрывает файл. При попытке произвести какую-либо операцию над закрытым файлом генерируется исключение ValueError. Допускается вызов метода close() более одного раза.

flush ()

Сбрасывает содержимое внутреннего буфера. isatty ()

Возвращает истину, если файл соответствует устройству tty, иначе возвращает 0 (ложь). Если объект с интерфейсом, характерным для файловых объектов, не ассоциирован с реальным файлом, для него этот метод не должен быть реализован.

fileno()

Возвращает дескриптор файла (целое число), используемый для запросов к операционной системе для выполнения операций ввода/вывода. Может быть полезен для выполнения операций низкого уровня, использующих дескрипторы (например, определенные в модулях os и fcntl ). Если объект с интерфейсом, характерным для файловых объектов, не ассоциирован с реальным файлом, для него этот метод не должен быть реализован.

read ([size])

Считывает не более size байт из файла (меньше, если конец файла достигается раньше, чем прочитано size байт). Если аргумент size опущен или отрицательный, считывается все содержимое файла. Считанные байты возвращаются в виде строкового объекта. Для некоторых файлов (например, устройства tty) вполне осмысленно продолжение чтения после достижения конца файла.

readline( [size])

Считывает и возвращает строку из файла, включая завершающий символ новой

11.7 Файловые объекты



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [ 48 ] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145