genauso neu auch in der Python community.
Beim titel is mir nur Mist eingefallen deswegen sorry dafür.
Fang gerade an das zu lernen und habe jetzt ein Problem, dass ich mir nicht erklären kann.
Folgende Grundlage habe ich:
Code: Alles auswählen
liste = []
class Example():
name = ""
example_list = []
def __init__(self):
self.name = ""
#self.example_list = []
for i in range(2):
print 'durchlauf '+str(i)
temp_exa = Example()
temp_exa.name = 'name_'+str(i)
print temp_exa.name
if i == 0:
temp_exa.example_list.append('foo '+str(temp_exa.name))
else:
temp_exa.example_list.append('bar '+str(temp_exa.name))
print temp_exa.example_list
liste.append(temp_exa)
for exa in liste:
print exa
print exa.example_list
Die erzeugte Ausgabe ist dann folgende:
Code: Alles auswählen
durchlauf 0
name_0
['foo name_0']
durchlauf 1
name_1
['foo name_0', 'bar name_1']
<__main__.Example instance at 0xb72b29cc>
['foo name_0', 'bar name_1']
<__main__.Example instance at 0xb6e3376c>
['foo name_0', 'bar name_1']
Ich erzeuge mir also zwei Instanzen der Example Klasse und fülle diese. Unter anderem auch eine Liste.
Beim zweiten durchlauf enthällt die Liste Example.example_list bereits den wert, der der ersten Instanz zugewiesen wurde.
Hier hört es für mich dann auf, da komm ich mit meinen begrenzen Kenntnissen nicht mehr mit.
Wenn ich das hier auskommentierte self.example_list = [] in der __init__() funktion wieder rein nehme klappt es, das heißt jede
Instanz hat auch nur die ihr zugeordneten werte in der liste.
Da bräuchte ich unbedingt mal nen Ratschlag von euch.
Falls etwas unverständlich erklärt sein sollte versuche ich es gern noch genauer.
Danke