Salut,
Je me pose une question qui, après qq recherches, n'a toujours pas de réponse.
J'ai le code:
j'ai la sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class a: def __init__(self, name = "default"): self.name = name print "creation de " + self.name self.l = [] def __del__(self): print "destruction de " + self.name def fct(): obj1 = a("test1") print obj1 obj2 = a("test2") print obj2 obj1.l.append(obj2) del obj2 print obj1.l[0] return fct()
On voit que le destructeur n'est pas appele au moment ou j'appel del obj2 et je peux toujours afficher son identifiant. Pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 creation de test1 <__main__.a instance at 0x00AAAF80> creation de test2 <__main__.a instance at 0x00AAAFD0> <__main__.a instance at 0x00AAAFD0> fin destruction de test1 destruction de test2
Visiblement les deux objets obj1.l[0] et obj2 pointent au meme endoit et ils sont internes a la focntion alors je devrai pouvoir les supprimer non ?
et la suppression de l'un devrait empecher l'acces a l autre en toute logique ?!
Le but finale de la chose est de creer une liste d instances de a contenues dans la liste membre d'un a "conteneur" et, a l aide d'une exception, gerer un echec a la creation et immediatement la destruction de l'objet mal cree.
J'espere ne pas avoir ete trop confus.
Merci d'avance.
+++
PS: J'ai quand meme recherche dans un paquet de docs et dans des tutoriaux mais malheureusement, comme dit plus haut, rien de repond a cette question (ou alor je ne l ai pas compris)![]()
Partager