Dictionnaires et Heritage
Bonjour,
Je m'inscris aujourd'hui car en temps normal, je trouve des sujets de problèmes similaires afin de résoudre les miens. Cependant, je ne trouve pas de solution à mon problème. (peut-être que j'ai mal cherché car je ne pense pas être le premier avec ce probleme)
J'ai fait un petit code rapide afin de rendre compte de mon probleme.
(le probleme porte sur un projet plus conséquent, mais il est identique)
classe mere :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class mere(object):
_num=0
__default_params = {
"num" : "",
"nom" : "",
"prenom": "",
"type" : ""}
__num = None
__nom = None
__prenom = None
__type = None
def __init__(self,nom,prenom,type):
aux = {"num":self._num,"nom":nom,"prenom":prenom,"type":type}
self.__default_params.update(aux)
self.__num = self._num
self.__nom = nom
self.__prenom = prenom
self.__type = type
def pr(self):
print self.__default_params,
print self.__nom,
print self.__num,
print self.__prenom,
print self.__type |
classes filles :
Code:
1 2 3 4 5 6
| from mere import mere
class fille1(mere):
_num = "1"
class fille2(mere):
_num = "2" |
et mon main :
Code:
1 2 3 4 5 6 7 8 9
| from fille import fille1
from fille import fille2
if __name__ == '__main__':
f1 = fille1("name1","firstname1","type1")
f2 = fille2("name2","firstname2","type2")
f1.pr()
f2.pr() |
le resultat obtenu :
Code:
1 2
| {'nom': 'name2', 'prenom': 'firstname2', 'num': '2', 'type': 'type2'} name1 1 firstname1 type1
{'nom': 'name2', 'prenom': 'firstname2', 'num': '2', 'type': 'type2'} name2 2 firstname2 type2 |
Voila, comme vous pouvez le voir, les attributs "normaux" sont bons.
Par contre, le dictionnaire est toujours celui créé par la derniere instance créée.
Quelqu'un aurait-il une idée/solution d'où vient le problème?
Merci d'avance