базовый вопрос наследования Python (ic) - PullRequest
1 голос
/ 03 сентября 2011

Быстрый вопрос о наследовании Python (ic): в чем разница между идиомой , размещенной здесь (super(ChildClass,self).method(args)), и той, что на сайте документации Python (ParentClass.method(self,[args]))?Является ли еще один питон, чем другой?

1 Ответ

4 голосов
/ 03 сентября 2011

Использование super(ChildClass, self).method(args) позволяет вам пройти порядок разрешения метода и - если все, кроме последнего родителя используют super - вызывать каждый класс в иерархии ровно один раз.(Не то, чтобы super работал только с классами нового стиля.)

Использование ParentClass.method(self, args) вызывает один определенный класс.Он не работает, когда используется множественное наследование.

В этой статье приводится некоторое описание проблемы и разъясняется множество проблем для некоторых людей.Я не согласен со всеми его выводами, но он дает хорошие примеры и обсуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...