Maison >développement back-end >Tutoriel Python >Pourquoi Python renvoie-t-il une erreur « TypeError : l'objet 'list' n'est pas appelable » ?
Comprendre l'erreur "TypeError : l'objet 'list' n'est pas appelable"
Dans le cadre de votre tentative d'instancier une liste à l'aide du exemple d'affectation = list('easyhoss'), vous pouvez rencontrer l'erreur énigmatique "TypeError : l'objet 'list' n'est pas appelable." Ce problème déroutant provient d'une substitution imprévue de la classe de liste intégrée par une instance de celle-ci.
Exploration de la connexion classe-instance
En déclarant l'exemple de variable et en lui attribuant le résultat de list('easyhoss'), vous avez l'intention de créer une liste contenant les caractères 'e', 'a', 's', « y », « h », « o », « s » et « s ». Cependant, l'erreur se produit car list a été réaffectée à une instance d'elle-même lorsque vous avez utilisé list = list('abc') plus tôt dans votre code.
Navigation dans les étendues et les espaces de noms
Python utilise des espaces de noms pour gérer les noms d'objets, qui incluent des classes et des fonctions. Lorsque vous tentez d'accéder à une variable, l'interpréteur recherche dans l'espace de noms local et monte progressivement dans la hiérarchie jusqu'à ce que la variable soit localisée ou qu'une NameError soit rencontrée. Les fonctions et classes intégrées résident dans l'espace de noms de haut niveau __builtins__.
Conséquences de l'observation de l'espace de noms
En définissant une variable nommée list dans l'espace de noms de votre module, vous avez essentiellement occulté la classe de liste intégrée. Par conséquent, lorsque vous tentez d'invoquer list('easyhoss') après avoir redéfini list, l'interpréteur l'interprète comme invoquant l'instance plutôt que la classe prévue. En effet, la variable de liste définie localement est prioritaire.
Éviter l'observation des espaces de noms
Pour éviter de tels conflits d'espace de noms, il est conseillé d'éviter d'utiliser des noms de variables qui entrent en conflit avec ceux construits. -dans les identifiants. Les fonctions et classes intégrées de CPython sont répertoriées dans la documentation du module __builtin__. Vous pouvez également exploiter la puissance des environnements de développement intégrés (IDE) tels que PyCharm ou Atom avec des plugins Python, qui mettent souvent en évidence l'observation des espaces de noms pour aider à éviter les erreurs.
Comprendre les appelables et les instances
La liste intégrée est une classe qui peut être appelée pour créer une nouvelle instance de liste. À l’inverse, les instances elles-mêmes peuvent ne pas être appelables. Par conséquent, la tentative d'invocation de list('easyhoss') sur la liste d'instances (ce qui se produit après avoir redéfini la liste) déclenche cette erreur, car une instance d'une classe n'est pas appelable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!