![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| alex_smirnov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 22.6.2007 Где: Санкт-Петербург Репутация: 2 Всего: 4 |
Добрый день!
Вот смотрю я на код отсюда и не понимаю:
Не понимаю следующее: -- почему метод translate вызывает __getitem__? (Я понимаю, что этот метод может вызываться снаружи по определенным правилам, но почему он вызывается внутри?) Спасибо. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
А вы смотрели описание метода `translate` у строки?
Там первым параметром идет таблица преобразования, ну т.е. лист обычный с доступом по индексу. Тут в качестве таблицы передается сам объект и внутри `translate` у него зовется `__getitem__` как у листа Это сообщение отредактировал(а) Daevaorn - 13.10.2008, 15:24 |
|||
|
||||
| alex_smirnov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 22.6.2007 Где: Санкт-Петербург Репутация: 2 Всего: 4 |
Да, описание я смотрел, но не догонял, сейчас, кажется, догнал.
Давайте по порядку... 1. Мы передали объект Keeper как объект содержащий таблицу символов. 2. Когда translate отрабатывает, данный ему объект он воспринимает как список или кортеж и работает с ним должным образом через внутренний метод __getitem__. Логику понял. Спасибо! Только вот: Чтобы дальше на подобных ООП штуках не особо втыкаться, подскажите, пожалуйста, конкретные источники, где хорошо описаны методы типа __getitem__(), чтобы была информация: когда вызывается, как вызывается, что возвращает и т.д. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
Самый лучший источник - это официальная документация. В частности, всякие такие "магические методы" описаны тут . Конкретно __getitem__ здесь |
|||
|
||||
| alex_smirnov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 22.6.2007 Где: Санкт-Петербург Репутация: 2 Всего: 4 |
Вооот, спасибо!
И точно, "читайте доки, доки -- рулез!". Пошел изучать. Тема исчерпана. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |