Bonjours à tous, et désolé pour le titre peu descriptif, mais je n'ai pas trouvé mieux.

Je suis expérimenté en programmation objet, mais pas trop en Python.

Voici un exemple de code:

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
26
27
 
class Simple:
	varsList = []
 
 
 
class Lister:
	simplesList = []
 
 
	def __init__(self):
		for counter in range(0, 13):
 
			if (counter%2) == 0:
				simple = Simple()
				self.simplesList.append(simple)
 
			simple.varsList.append(counter)
 
 
 
# Main program
 
lister = Lister()
for list in lister.simplesList:
	print list
	print list.varsList
Et voici son résultat:
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
 
<__main__.Simple instance at 0x00A87148>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A87170>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A87198>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A871C0>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A871E8>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A87210>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
<__main__.Simple instance at 0x00A87238>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Seulement, je m'attendais à ça:
[0, 1]
[2, 3]
[4, 5]
[6, 7]
[8, 9]
[10, 11]
[12, 13]

On voit que simple = Simple() crée bien une nouvelle instance (les adresses des instances sont différentes), mais pourquoi diable, toutes les instances semblent référencer simple, alors que je suis sensé avoir créé un nouvel objet.


Merci d'avance pour vos réponses et solutions (ça me bloque dans un programme plus complexe).