Cum funcționează MRO-ul din Python și ce este linearizarea C3


Un tutorial Python care explică cum funcționează ordinea de rezolvare a metodelor și ce face linearizarea C3. Acoperă MRO-ul ca listă plată, ordonată, calculată o dată când rulează instrucțiunea class și stocată în mro, regula de îmbinare care ia doar o clasă ce nu apare în coada niciunei alte liste, și cele trei garanții care decurg: o clasă își precedă bazele, ordinea declarată de la stânga la dreapta este păstrată, iar o subclasă nu contrazice niciodată ordonarea unui părinte. Exemple rulabile cu ieșire reală arată o ierarhie în romb care plasează baza comună după amândouă mixinurile, exact o dată, un lanț super() cooperativ care dispecerizează dintr-un mixin într-o soră ce nu se află printre bazele lui, și doi părinți incompatibili care ridică TypeError la instrucțiunea class. Acoperă și lanțurile super() rupte, semnăturile de init cooperativ, clasele de bază duplicate și de ce object este întotdeauna ultimul.

Комментарии

Комментариев пока нет. Будьте первым, кто поделится своим мнением.
Эксперт
0,0 (0)

Автор

Software engineer and the creator of the Bytestark learning platform