Обложка канала

Библиотека Python разработчика

20835 @BookPython

Библиотека Python разработчика. Книги по программированию на Python.

Библиотека Python разработчика

4 года назад
Открыть в
Consider the following class hierarchy: class GrandParent: pass class Parent1(GrandParent): pass class Parent2(GrandParent): pass class Child(Parent1, Parent2): pass Which order will be used to look up the Child.x() method? The naive approach is to recursively search through all parent classes which gives us Child, Parent1, GrandParent, Parent2. While many programming languages follow this method indeed, it doesn't quite make sense, because Parent2 is more specific than GrandParent and should be looked up first. In order to fix that problem, Python uses C3 superclass linearization, the algorithm that always searches for a method in all child classes before looking up the parent one: In : Child.__mro__ Out: (__main__.Child, __main__.Parent1, __main__.Parent2, __main__.GrandParent, object)