Même ID d'objet pour les instances de classe conséquentes
Lors de la création de plusieurs instances d'une classe sans leur attribuer de nom, Python attribue le même ID à tous. Ce comportement, qui peut surprendre à première vue, est dû à la notion de durée de vie des objets en Python.
L'ID d'un objet assure son unicité uniquement pendant la durée de vie de l'objet. Dans l'exemple fourni, someClass() est appelée plusieurs fois dans le cadre d'une seule instruction. Chaque appel crée un nouvel objet. Cependant, comme ces objets ne sont affectés à aucune variable et que leur portée se termine immédiatement après la fin de l'exécution de l'instruction, ils deviennent disponibles pour le garbage collection.
Dans CPython, l'implémentation par défaut de Python, le garbage collection utilise le comptage de références. De plus, l'ID d'un objet est lié à son emplacement mémoire. Cette combinaison de facteurs explique pourquoi les instances conséquentes de someClass() partagent le même ID : la mémoire est désallouée et réutilisée à mesure que de nouveaux objets sont créés dans la même portée de fonction.
Pour résoudre ce problème et garantir des ID distincts pour la classe Dans certains cas, envisagez soit de conserver les objets dans une structure de données, soit d'implémenter un schéma d'identification personnalisé au sein de la classe.
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!