![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Непонятна ситуация с классом C. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
slivlen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.8.2006 Репутация: 1 Всего: 3 |
А так все нормально ![]() |
|||
|
||||
cherep |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: 1 Всего: 4 |
А что конкретно не ясно-то? Вроде все логично.. Если ты не переопределил конструктор (как в классе C), то при создании экземпляра этого класса будет вызван конструктор первого суперкласса, т.е. A. На то оно и наследование...
|
|||
|
||||
slivlen |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.8.2006 Репутация: 1 Всего: 3 |
||||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
||||
|
||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Daevaorn, считаешь что так более правильно - убеди товарищей из python-dev. Только предварительно не забудь написать патч, который меняет поведение Python на нужное тебе.
--------------------
Be easy, stay cool |
|||
|
||||
setq |
|
|||
Unregistered |
cherep, не то чтобы очень логично. С точки зрения того, что у класса может быть только один метод __init__ и поэтому по правилам поиска выбирается __init__ первого базового класса -- да. С точки зрения того "как должно быть правильно" -- наверно всё-таки нет.
|
|||
|
||||
Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Понятно, спасибо.
на этом меня и "глюкнуло" ![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
cherep |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: 1 Всего: 4 |
Как раз это менее логично, хотябы по тому, что explicit is better than implicit. Порядок перечисления суперклассов при определении нового класса , ну то есть
определяет прежде всего порядок перекрытия одноименных методов и полей в т.ч. и конструктора. Или Вы считаете что вызов A().meth(arg) должен приводить к B.meth(self, arg), C.meth(self, arg) и т.д. - это глупо, т.к. такое поведение редко надо, а если надо, то достигается явным (explicit) определением:
Ровно таким же образом можно задать и вызов всех конструкторов, если нужно. |
||||||
|
|||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
||||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |