MRO2 (классический порядок разрешения методов) используется в старых, "классических" классах, которые явно не наследуются от object
. Он основан на глубине поиска по иерархии наследования.
MRO3 (C3 linearization algorithm) используется в классах, наследующихся от object
(что является стандартом в Python 3, и в Python 2.2+ при использовании __ будущие__ import division
). Он гарантирует создание монотонного порядка, предотвращая некоторые проблемы многократного наследования, которые могли возникнуть с MRO2 (например, Diamond Problem).
Основные отличия:
MRO2 (классический порядок разрешения методов) используется в старых, "классических" классах, которые явно не наследуются от object
. Он основан на глубине поиска по иерархии наследования.
MRO3 (C3 linearization algorithm) используется в классах, наследующихся от object
(что является стандартом в Python 3, и в Python 2.2+ при использовании __ будущие__ import division
). Он гарантирует создание монотонного порядка, предотвращая некоторые проблемы многократного наследования, которые могли возникнуть с MRO2 (например, Diamond Problem).
Основные отличия:
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.