Разделы инструкций

В сети

Пользователей: 55
Из них просматривают:
Wiki: 1. Аналоги: 16. Даташиты: 6. Инструкции: 5. Новости: 6. Остальное: 8. Ошибки: 1. Программы: 1. Производители: 1. Торрент: 1. Форум: 8. Чат: 1.
Участников: 3
Гостей: 52

Google , wolf170571 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

9.3.4. Методы экземпляров классов

Обычно метод вызывают непосредственно:

 

x.f()

 

В нашем примере он вернет строку 'Привет всему миру'. Однако совсем не обязательно вызывать метод прямо. x.f является объектом-методом, и его можно сохранить для дальнейшего использования:

 

xf = x.f
while 1:
    print xf()

 

будет выводить 'Привет всему миру' до тех пор, пока выполнение не будет прервано.

Что же происходит при вызове метода? Вы могли заметить, что x.f() вызывается без аргумента, несмотря на то, что в определении аргумент указан. Что же случилось с аргументом? Конечно, Python генерирует исключение, если функцию, требующую аргумент, вызвать без него — даже если аргумент на самом деле не используется.

Вы могли уже догадаться: особенность методов состоит в том, что объект, для которого он применяется, передаётся в качестве первого аргумента. В нашем примере вызов x.f() полностью эквивалентен MyClass.f(x). В общем, вызов метода, привязанного к объекту, со списком из n аргументов полностью эквивалентен вызову соответствующего не привязанного метода (или функции) со списком аргументов, полученным добавлением объекта перед первым аргументом.

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

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Щуп станет универсальным, если с обратной стороны его на коротком проводе припаять"крокодил" в резиновом чехле.

Интересно

Посыпав место пайки песком или натерев крошащимся камнем, можно паять обычными методами даже алюминий.

Похожие инструкции