Problemas de superfunciones de Python en clases y objetos
Debido a que el supermétodo se llama en la clase B, el programa de la clase C se ejecuta sin ejecutar la clase B
El orden de llamada del supermétodo en un programa de herencia múltiple. usando el algoritmo C3 (en python3).
Las reglas del algoritmo C3 son las siguientes
① Comenzando desde la capa inferior, seleccione el punto con borde de entrada cero.
② De izquierda a derecha.
③ Explora en profundidad. Pero está restringido por la regla ②.
Cada clase puede usar la función mro para ver su propio orden de herencia (el nombre completo de MRO es Orden de resolución de método, que se usa para definir el orden de llamada de los métodos heredados)
Para tu programa
Análisis
① Reglas. Después de eliminar la clase D, los bordes de entrada con cero son reglas de clase B y clase C
②. Después de eliminar la clase B, solo la clase C tiene bordes de entrada cero. La conclusión es D-gt; B-gt; C-gt; A.A'gt;, lt; class 'object'gt;]
Pregunta 2
Herencia en python3 A diferencia de la herencia ordinaria, la superfunción ha tenido en cuenta el problema de la herencia repetida, por lo que solo se accede a la clase A una vez
.