Приложение В

Специальные методы классов в 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) Числовой метод. Выполняет побитовое исключающее ИЛИ (оператор ^) и возвращает результат.