Приложение В
Специальные методы классов в Python
Специальные методы классов — это очень важное средство Python, которое делает его несравнимым по гибкости и простоте использования. Во всех пользовательских классах можно создавать собственные выполнения этих методов, которые будут автоматически вызываться интерпретатором Python в стандартных ситуациях. Принципы использования специальных методов классов мы детально обсудили в главе 13. В этом приложении мы не будем вновь рассматривать примеры и особенности использования стандартных методов в программах. Цель данного приложения состоит в том, чтобы предоставить Вам полный список всех специальных методов классов, отсортированный по алфавиту, с кратким описанием каждого метода. Аналогичный список можно найти на сервере Python по адресу http://www.python.org/doc/current/ref/index.html.
Обратите внимание, что в тех случаях, когда указывается, что метод возвращает результат, необходимо создать новый объект, которому будет присваиваться результат. Например, в выражении х=х+у объекты х и у являются входящими, а в результате их суммирования возвращается новый объект, который вновь присваивается переменной х.
Метод Описание __abs__(self)
Числовой метод. Возвращает абсолютное значение объекта self (без знака) __add__
(self,other)
Числовой метод или последовательности. Прибавляет self к other или выполняет конкатенацию последовательностей self и other, возвращает результат __and__
(self, other)
Числовой метод. Возвращает результат побитового И (оператор &) self с other и возвращает результат __саll__
(self[,args])
Метод пользовательского класса. Если выполнение переданного класса как функции имеет смысл, использует его как метод. Список аргументов args не обязателен __cmp__(self,other) Метод пользовательского класса и данные других типов. Вызывается при всех операциях сравнения. Возвращает -1 если self < other, 0 — если self равно other, и 1 -если self > other __coerce__(self,other) Числовой метод. Вызывается каждый раз, когда self и other нужно привести к одному типу данных для выполнения каких-либо математических операций. Как правило, тип other приводится к экземпляру класса self, хотя возможно и обратное преобразование. Возвращает набор (self, other) __complex__(self) Числовой метод. Если Ваш класс может быть преобразован в комплексное число, то будет возвращен этот комплексный эквивалент __del__(seif) Метод пользовательского класса. Вызывается при удалении одного из экземпляров данного класса. При написании выполнения нужно учесть много особенностей и нюансов (см. главу 13) __delattr__(self, name) Метод доступа. Вызывается инструкцией del object.nаmе __delitem__(self,key) Метод обработки последовательностей. Вызывается инструкцией del object[key] __delslice__(self,i,j) Метод обработки последовательностей. Вызывается инструкцией del object[i: j] __div__( self, other) Числовой метод. Делит self на other и возвращает результат __divmod__(self,other) Числовой метод. Делит по модулю self на other и возвращает набор из результата и остатка __float__(self) Числовой метод. Если число может быть приведено к значению с плавающей запятой, то возвращает его __getattr__(self,name) Метод доступа. Вызывается только в том случае, если обращение к атрибуту object, attribute потерпело неудачу. Возвращает значение атрибута или запускает исключение AttributeError __getitem__(self,key) Метод обработки последовательностей. Вызывается инструкцией object[key]. В качестве ключей обычно выступают целые числа. Отрицательное индексирование возможно только в том случае, если Ваш класс поддерживает его. __getslice__(self,i,j) Метод обработки последовательностей. Вызывается инструкцией object[i:j]. Оба индекса, i и j, являются целыми числами. Возможно выполнение метода с отрицательным индексированием __hash__(self) Метод пользовательского класса. Возвращает 32-разрядное значение, которое можно использовать как hash-индекс. Вызывается с использованием объекта пользовательского класса в качестве ключа словаря с помощью встроенной функции hash(). Для непостоянных (mutable) классов метод __hash__ не вызывается. __hex__(self) Числовой метод. Возвращает строку, представляющую шестнадцатеричный эквивалент переданного класса __init__(seif [ ,args]) Метод пользовательского класса. Вызывается при реализации класса. Набор аргументов args не обязателен.
__int__(self) Числовой метод. Если класс может быть приведён к целому числу, возвращает целочисленный эквивалент. __invert__ (self) Числовой метод. Возвращает результат побитового инвертирования (оператор ~) __len__(self) Метод обработки последовательностей. Вызывается встроенной функцией len(). Возвращает длину класса, как Вы её определите. __long__(self) Числовой метод. Если Ваш класс может быть преобразован в длинное целое значение, возвращает целочисленный эквивалент. __lshift__(self , other) Числовой метод. Возвращает результат сдвига влево (оператор <<) на число бит, заданных параметром other, или на число единиц пользовательского класса, если это имеет смысл. __mod__ (self, other) Числовой метод. Делит self на other и возвращает остаток. __mul__ (self, other)
Числовой метод. Умножает self на other и возвращает результат. __neg__ (self) Числовой метод. Умножает Ваш класс на -1 и возвращает результат. Метод пользовательского класса. Возвращает 0 или 1 в зависимости от истинности проверки. Вызывается инструкцией if, условными выражениями и т.д. __oct__(self) Числовой метод. Возвращает строку, содержащую восьмеричное представление пользовательского класса. __or__ (self, other) Числовой метод. Вызывается оператором побитового ИЛИ (|) и возвращает результат. __pos__ (self) Числовой метод. Выполняет операцию умножения пользовательского класса на 1 — операция тождества. __pow__(self , other[ ,modulo]) Числовой метод. Возводит self в степень other. Если предоставлен аргумент modulo, выполняет операцию (self**other)|modulo __radd__(self, other) Числовой метод. Суммирует self с other и возвращает результат. Вызывается, например, выражением 1+class, но не class+1. __rand__(self, other) Числовой метод. Возвращает результат побитового И (оператор &) self с other и возвращает результат, но только в том случае, если левый операнд не является членом класса self __rdiv__(self,other) Числовой метод. Делит self на other и возвращает результат, но только в том случае, если левый операнд не является членом класса self. __rdivmod__(self, other) Числовой метод. Делит self на other и возвращает набор из результата и остатка, но вызывается только в том случае, если левый операнд не является членом класса self. __repr__(self) Метод пользовательского класса. Вызывается встроенной функцией repr() и во время преобразования значения в строку (символами обратного ударения). По соглашению предполагается возвращение такой строки, которая может быть использована впоследствии для восстановления экземпляра класса. __rlshift__(self, other) Числовой метод. Возвращает результат сдвига вправо (оператор >>) на число бит, заданных параметром other, или на число единиц пользовательского класса, если это имеет смысл. Оператор вызывается только в том случае, если левый операнд не является членом ,класса self. __rmod__(self, other) Числовой метод. Делит self на other и возвращает остаток, но только в том случае, если левый операнд не является членом класса self. __rmul__(self,other) Числовой метод. Умножает self на other и возвращает результат, но только в том случае, если левый операнд не является членом класса self. __ror__(self,other) Числовой метод. Вызывается оператором побитового ИЛИ (|) и возвращает результат, но только в том случае, если левый операнд не является членом класса self. __rpow__(self, other) Числовой метод. Возводит self в степень other. He существует r-эквивалента для операции pow(self,other[,modulo]). Вызывается только в случае, если левый операнд не является членом класса self. __rrshift__(self, other) Числовой метод. Возвращает результат сдвига вправо (оператор>>) на число бит, заданных параметром other, или на число единиц пользовательского класса, если это имеет смысл. Оператор вызывается только в том случае, если левый операнд не является членом класса self. __rshift__(self, other) Числовой метод. Возвращает результат сдвига вправо (оператор >>) на число бит, заданных параметром other, или на число единиц пользовательского класса, если это имеет смысл. __rsub__(self, other) Числовой метод. Отнимает other от self и возвращает результат, но только в том случае, если левый операнд не является членом класса self. __rхоr__(self,other) Числовой метод. Выполняет операцию побитового исключающего ИЛИ (оператор ^) и возвращает результат, но только в том случае, если левый операнд не является членом класса self. __setattr__(self,name,value) Метод доступа. Вызывается инструкцией object.attribute = value. При этом присвоенное значение добавляется в словарь экземпляра объекта и связывается с соответствующим атрибутом:
self.__diet__[nаmе]=value.
__setitem__(self, key, value) Метод обработки последовательностей. Вызывается инструкцией object[key] = value. В качестве ключа key обычно выступает целое число. __setslice__(self,i,j,s equence) Метод обработки последовательностей. Вызывается инструкцией object[i: j] = sequence. Индексы i и j — всегда целые числа. __str__(self) Метод пользовательского класса. Вызывается встроенной функцией str() и инструкцией print (а также операторами * в выражениях форматирования). Этот метод должен возвращать строку, но к этой строке в Python нет таких требований, как к строке, возвращаемой методом __rерr__. __sub__(self, other) Числовой метод. Отнимает other от self и возвращает результат. __xor__(self, other) Числовой метод. Выполняет побитовое исключающее ИЛИ (оператор ^) и возвращает результат.