Bon j'ai un put*** de problèmes et impossible de voir ou est le bug.
Grosso modo j'ai une classe entité qui des qu'un objet est instancié l'ajoute dans une liste static de ma classe.
J'ai une classe donnée qui a une méthode statique qui instancie un nouvelle entité.
Enfin j'ai une classe testDonnee qui appel la méthode statique de la classe Donnee.
Le problème est que: quand la méthode de ma classe donnée, appelée par ma classe testDonnee, crée un objet entité bah il est ajouté dans la liste de la classe entite sauf que quand je retourne dans ma classe testDonnée il n'y ait plus.
voila le code je l'ai raccourcis au maximum:
Ma classe donnée
Ma classe entité
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 # -*- coding: utf-8 -*- from noyau.Entites import * class Donnee(object): def __init__(self, nom): pass ##Parcours le tableau statique et par conséquence toutes les Donnee pour créer les entités. @staticmethod def creerEntites(): Entite("test"); print("longueur avant %i"%len(Entite.getListeEntites()))
Ma classe testDonnee
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 # -*- coding: utf-8 -*- class Entite(object): #variable statique contenant les references des entités créées _listeEntitees=[] def __init__(self, identifiant): self._identifiant=identifiant self.__class__._listeEntitees.append(self) #ajout de l'instance entités au tableau statique de liste d'entitées @staticmethod def getListeEntites(): return Entite._listeEntitees
Et voila le résultat de ma console:
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 # -*- coding: utf-8 -*- import unittest from noyau.Donnee import * from noyau.Entite import * class TestDonnee(unittest.TestCase): ##Tests de la validité de la méthode creerEntites de la classe Donnee. #@param self <b>TestDonnee:</b> Une référence sur l'objet TestDonnee créé. def testDonneeCreationEntites(self): #mise a zéros de la liste statique de données Donnee.creerEntites() print("longueur apres %i"%len(Entite.getListeEntites()))
Merci d'avance de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Finding files... ['/home/marcel/workspace/AASI/testNoyau/TestDonnee.py'] ... done Importing test modules ... done. testDonneeCreationEntites (TestDonnee.TestDonnee) ... longueur avant 1 longueur apres 0 ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK![]()
Partager