¿Por qué reembolsar super () puede romper el código
en Python 3.x, la función super () se puede llamar sin argumentos para acceder a los métodos de la superclase? Este comportamiento está habilitado por un truco de magia de tiempo de compilación que establece una conexión entre super () y la clase de llamadas. Sin embargo, si el súper nombre se rebota a una variable diferente (super_ en el ejemplo), esta conexión está rota.
La razón de esto es el D.R.Y. (No se repita) Principio. Nombrar explícitamente la clase de llamadas en las llamadas a la superclase viola este principio y aumenta el riesgo de reembolsar problemas. Además, el uso de decoradores de clase que cambia el nombre de clase también interrumpe la referencia al objeto de clase original.
creando una celda invisible de clase dentro de un cierre alrededor de la función que contiene super (), la implementación mágica de super () evita estos problemas. La celda hace referencia al objeto de clase original, asegurando que super () siempre pueda acceder a la superclase correcta, incluso si el súper nombre es rebote.
Si bien este comportamiento puede parecer sorprendente, es importante tener en cuenta que Super () a menudo se usa mal. Al simplificar la sintaxis de la llamada y evitar las dificultades de recursión infinitas, la implementación actualizada ayuda a prevenir errores.
Si Super es rebote, haciendo referencia a class en el método restaura su funcionalidad. Esto se debe a que la celda se crea cuando se usa Super o class dentro del método.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3