Pourquoi la référence super () peut casser le code
dans Python 3.x, la fonction super () peut être appelée sans arguments pour accéder aux méthodes du superclass. Ce comportement est activé par une astuce magique de compilation qui établit une connexion entre super () et la classe d'appel. Cependant, si le super nom rebondit à une variable différente (super_ dans l'exemple), cette connexion est cassée.
La raison en est le D.R.Y. (Ne vous répétez pas) Principe. Nommer explicitement la classe d'appels lors d'appels à la superclasse viole ce principe et augmente le risque de relier les problèmes. De plus, l'utilisation de décorateurs de classe qui changent le nom de classe perturbe également la référence à l'objet de classe d'origine.
en créant une cellule de classe invisible dans une fermeture autour de la fonction contenant super (), l'implémentation magique de super () évite ces problèmes. La cellule fait référence à l'objet de classe d'origine, garantissant que Super () peut toujours accéder à la superclasse correcte, même si le super nom est rebond.
Bien que ce comportement puisse sembler surprenant, il est important de noter que Super () est souvent mal utilisé. En simplifiant la syntaxe des appels et en évitant les pièges de récursion infinis, l'implémentation mise à jour aide à prévenir les erreurs.
Si super rebond, référençant classe dans la méthode restaure sa fonctionnalité. En effet, la cellule est créée lorsque la classe Super ou est utilisée dans la méthode.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3