IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Python etliste static


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut Python et liste static
    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
    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 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 -*-
     
    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
    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
    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()))
    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
    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
    Merci d'avance de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 123
    Par défaut
    J'ai trouvé la classe TestDonnee importe noyau.Entite et donc elle crée une nouvelle variable de classe qui écrase l'autre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méthode static est python
    Par Battant dans le forum Général Python
    Réponses: 1
    Dernier message: 12/02/2015, 22h33
  2. charger du python depuis du C en static?
    Par delfare dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 19/02/2011, 13h47
  3. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  4. Mais que fait static ???
    Par elsargento dans le forum C
    Réponses: 4
    Dernier message: 25/09/2003, 09h55
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo