Le code suivant me surprend un peu.
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
22
23
24
25
#!/usr/bin/env python
#coding=utf-8
 
class test(object):
    def __init__(self, text):
        self.text = text
        self.etrange = 'ok'
    def __str(self):
        return self.text
 
dicoClass = {}
dicoClass['o'] = test('oo')
a = dicoClass['o']
a.etrange = 'testons'
b = dicoClass['o']
print "b.etrange == a.etrange"
print b.etrange
 
dicoChaine = {}
dicoChaine['o'] = 'oo'
c = dicoChaine['o']
c = 'non'
d = dicoChaine['o']
print "d <> c"
print d
Ceci donne à la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
b.etrange == a.etrange
testons
d <> c
oo
Ce que je voudrais c'est avoir pour b une nouvelle instance qui aura bien la valeur par défaut de b .etrange. Comment faire sachant que j'ai absoluement besoin de travailler avec des dictionnaires de classes ?
Au passage, pourquoi ce comportement sinueux de Python ?