Mana bu kod error chiqaradi.
Bunga sabab esa Python Method Resolution Order(MRO)ni aniqlash uchun ishlatadigan algorithm – C3 Linearization.
C3 Linearization algorithmining vazifasi biror classning hamma ancestor(ajdod)larini ma'lum qonuniyat asosida chiziqli tartiblash (bu orqali method overriding/overloading hal qilinadi).
Bu algorithm biroz murakkab bo'lsa-da, u monolith xususiyatini saqlab qola oladi. Bundan oldin ishlatilgan "Depth-first, left to right" (Python 2.2 gacha ishlatilgan) algorithmi tuzilishi jihatdan juda sodda bo'lsa-da, u monotonic emas edi (ya'ni multiple inheritance vaqtida order almashib ketishi mumkin edi).
Yuqoridagi misolda algorithm E classning ancestorlarini linearize qilishda dead lockga o'xshash muammoga duch keladi va TypeError chiqaradi.
C3 ning qanday ishlashi haqida esa hali yana gaplashamiz.
Manbaa:
https://www.python.org/download/releases/2.3/mro/
@boboshersnotes
Post #390
1.85K
Engineering Notes What is the output of the following code?
- 👍 15