Анимация
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

name

Имя класса.

module

Имя модуля, в котором класс определен.

dict

Словарь атрибутов класса. Вы можете изменять его содержимое, тем самым добавлять и удалять атрибуты класса и изменять их значения. Вы даже можете присвоить dict новое значение, но это может спровоцировать довольно странные ошибки.

bases

Кортеж базовых классов в порядке их следования в списке базовых классов. Вы можете изменить значение этого атрибута, однако вряд ли найдется достаточно веская причина для подобных манипуляций.

doc

Строка документации класса или None, если она не определена.

11.6.2 Экземпляры классов

Объект-экземпляр класса возвращается при вызове объекта-класса (см. раздел 11.4.4). Пространство имен объекта-экземпляра реализовано в виде словаря, в котором поиск

11.6 Классы и экземпляры классов 11.6.1 Классы

Объект-класс создается с помощью определения класса (см. раздел 10.4.6). Пространство имен класса реализовано в виде словаря, доступного через специальный атрибут dict . Ссылка на атрибут класса преобразуется в поиск соответствующего имени в

словаре, например, C.x преобразуется в С dict [x]. Если атрибут не найден,

поиск продолжается в базовых классах. Поиск производится сначала в глубину, затем слева направо, в порядке следования их в списке базовых классов. Если атрибуту соответствует объект function, то объект преобразуется в не привязанный к экземпляру объект-метод (см. раздел 11.4.2). Атрибут im class этого объекта-метода указывает на класс, в котором найден соответствующий ему объект-функция (он может быть одним из базовых классов).

Присваивание атрибуту класса вносит изменения в словарь этого класса, но никогда не изменяет словари базовых классов.

Объект-класс может быть вызван, для получения экземпляра класса (см. раздел

11.4.4).

Объекты-классы имеют следующие атрибуты:



11.6.3 Специальные методы

Определив для класса методы со специальными именами, Вы можете реализовать над его экземплярами определенные операции, которые вызываются с помощью специального синтаксиса.

Инициализация и очистка

init (self [, args...])

Вызывается при создании экземпляра класса (конструктор). args... - аргументы, с которыми вызывается объект-класс. Если базовый класс имеет метод init () , метод init () производного класса должен явно вызвать его, для инициализации части экземпляра, определенной в базовом классе.

del ( self)

Вызывается перед уничтожением экземпляра (деструктор). Если базовый класс имеет метод del () , метод del () производного класса должен явно вызвать его, для очистки части экземпляра, определенной в базовом классе. Заметим, что можно (но не рекомендуется) предотвратить уничтожение экземпляра, создав новую ссылку на него. Метод del () будет вызван снова - при удалении

атрибутов производится в первую очередь. Если атрибут не найден, поиск продолжается среди атрибутов класса (см. раздел 11.6.1). При этом атрибут класса, являющийся методом, становится привязанным к данному экземпляру класса (см. раздел 11.4.2). Если нет

атрибута класса с таким именем, вызывается специальный метод getattr (). Если

же метод getattr () не определен, генерируется исключение AttributeError.

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

Объекты-экземпляры имеют следующие атрибуты:

dict

Словарь атрибутов экземпляра класса. Вы можете изменять его содержимое, тем самым добавлять и удалять атрибуты экземпляра и изменять их значения. Вы даже можете присвоить dict новое значение, однако это может спровоцировать довольно странные ошибки (часто программы на языке Python рассчитывают на возможность добавить атрибут к экземпляру класса, присваивание же dict нового значения может привести к мистическим исчезновениям таких атрибутов).

class

Объект-класс, экземпляром которого объект является. Вы можете изменить значение этого атрибута, однако вряд ли найдется достаточно веская причина для подобных манипуляций.



Истинность и сравнение

cmp (self, other)

Вызывается (для первого или второго операнда) при выполнении всех операций сравнения, кроме случаев, когда оба операнда являются экземплярами классов и при этом для первого операнда не определен метод cmp () . Должен возвращать целое число: отрицательное, если self < other, ноль, если self == other, и положительное целое число, если self > other (см. также описание функции cmp() в главе 12). Если метод cmp () (или rcmp () ) не определен, сравнение экземпляров производится по идентификаторам.

rcmp ( self, other)

Вызывается для второго операнда, если оба операнда являются экземплярами

этой ссылки. Если во время выхода из интерпретатора экземпляр все еще присутствует, вызов деструктора для него не гарантируется.

Замечания:

•Инструкция del x не вызывает напрямую x. del (), а лишь удаляет

имя x из локального пространства имен, тем самым уменьшая число ссылок на объект на единицу. Когда число ссылок на объект достигает нуля, для

него вызывается метод del (). Наиболее часто встречающаяся причина,

по которой количество ссылок на объект не достигает нуля - существование циклических ссылок между объектами. Такая ситуация возникает, например, при использовании двоесвязных списков или графов. В этом случае единственное средство - явно разорвать циклы. Циклические ссылки также создаются, если Вы сохраняете объект traceback, полученный с помощью функции sys.exc info() (см. описание модуля sys). В интерактивном режиме объект traceback, относящийся к последнему не перехваченному исключению, хранится в sys.last traceback. Он содержит ссылку на кадр стека функции, в которой возникла исключительная ситуация, и, соответственно, на все переменные функции. Чтобы разорвать эту связь достаточно присвоить None переменной sys.last traceback.

•В связи с тем, что условия, при которых вызывается метод del () , зависят от многих обстоятельств, не перехваченные исключения, возникающие во время его выполнения, игнорируются и на sys.stderr выводится соответствующее предупреждение. Кроме того, если объект удаляется при удалении объекта-модуля, в котором он определен (например, по окончании выполнения программы), другие глобальные объекты этого модуля уже могут быть удалены. По этой причине метод del () должен выполнять минимум операций поддержки внешних ресурсов. Гарантируется, что глобальные объекты, не являющиеся объектами-модулями, имя которых начинается с одного символа подчеркивания, удаляются раньше других.

•"Сборщик мусора" (см. описание модуля gc) автоматически обрабатывает только объекты, не имеющие деструктора. Наличие в цикле ссылающихся друг на друга, но недоступных извне объектов экземпляра с методом del () приведет к тому, что все объекты цикла останутся не уничтоженными.



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