![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| sim1246 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.3.2010 Репутация: нет Всего: нет |
Есть контейнерный класс tmpA который содержит объект класса А. Класс tmpA поддерживает не все методы для А. Например А + B правильно, tmpA + B нет такой операции.
Я пытаюсь через __getattr__ tmpA достучаться до методов класса А. В случае обычного метода например change все срабатывает, в случае __add__ валится TypeError usuppoted operand type for +. Причем если сделать так чтобы классы не наследовались от object то все работает. Заранее спасибо
Это сообщение отредактировал(а) sim1246 - 4.3.2010, 10:59 |
|||
|
||||
| shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: 2 Всего: 2 |
Привет, sim1246!
Вообще не сильно понял причины такого подхода.. Но если целью было нормально складывать tmp_a + b и чтобы функция change нормально работала надо так:
|
|||
|
||||
| sim1246 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.3.2010 Репутация: нет Всего: нет |
Спасибо большое. Причины долго объяснять, нужно именно так как есть. Наследование не пройдет.
|
|||
|
||||
| shupg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 21.6.2006 Репутация: 2 Всего: 2 |
Насколько я понимаю, если у тебя в классе явно не переопределена функция сложения ни фига работать не будет.
Если тупо указать:
Все начнет работать. Это похоже на фичу интерпретатора. Если это не поможет - других вариантов не знаю. Удачи! Это сообщение отредактировал(а) shupg - 5.3.2010, 12:25 |
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |