Bonjour!

Je souhaiterais faire passer des dictionnaires d'une méthode à une autre dans une même classe. Je n'arrive pas à transférer mes dictionnaires corretement, ou du moins pas complétement. J'utilise une methode __init__ pour lire un fichier externe (appelé decay.dat). A partir de decay.dat, j'obtiens N dictionnaires.

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
 
import os
import sys
import re 
 
class DecayParser():
 
  def __init__(self, inputFiles):
     ... #je parse les éléments à partir de mon fichier externe vers des listes, et je transforme ces listes en dictionnaires
     print self.isotopeDecay
 
  def modifyValues(self):
    print self.isotopeDecay
 
decay_parser = DecayParser('decay.dat') 
decay_parser.modifyValues()
Le dictionnaire à ligne 10 ressemble à cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
print self.isotopeDecay
{'Er168': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Yb168': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Tm169': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Er170': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Yb170': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Tm171': ['1.144E-08', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Yb171': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
{'Yb172': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
la ligne 13 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
print self.isotopeDecay
{'Yb172': ['0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00', '0.000E+00']}
Voila mon premier problème, je n'obtiens que le dernier dictionnaire issu de ma première méthode __init__. Je souhaiterais pouvoir utiliser ma méthode modifyValues sur tous les dictionnaires que j'ai obtenu dans __init__. En résumé, voilà mes questions:

1- Y a-t-il un moyen de passer mes dictionnaires directement de ma méthode __init__ vers modifyValues, ou suis-je obligé de repasser par le main? En d'autres termes, suis-je obligé d'appeler ma fonction modifyValues a la ligne 16 (dans le main) ou puis-je l'appeler immediatement dans __init__?

2- Si la réponse à la question 1- est non -- i.e. je peux passer mes dictionnaires directement de __init__ vers modifyValues, suis-je obligé de mettre mes dictionnaires dans un (unique) tuple, et envoyé ce tuple de __init__ vers main, puis de main vers modifyValues? En l'état des choses, je n'arrive à récupérer qu'un seul dictionnaire (le dernier) dans modifyValues. En d'autres termes, quel est le meilleur moyen de passer tous mes dictionnaires d'une méthode à l'autre?


Merci de votre aide!