Ich wollte in einer Schleife ein Objekt anlegen, ein paar Einträge an eine Liste anhängen und das Objekt dann per yield zurückgeben. Ungefär so:
Code: Alles auswählen
#!/usr/bin/python3
class MyClass:
def __init__(self, mylist=[]):
self.mylist = mylist
for i in range(5):
obj = MyClass()
print("obj.mylist:", obj.mylist)
obj.mylist.append(i)
# yield obj
Code: Alles auswählen
$ python3 testloop.py
obj.mylist: []
obj.mylist: [0]
obj.mylist: [0, 1]
obj.mylist: [0, 1, 2]
obj.mylist: [0, 1, 2, 3]
Ein workaroud ist übrigens bei der Konstruktion explizit eine leere Liste zu übergeben: obj = MyClass(mylist=[]).
Ich würde trotzdem gerne verstehen was hier passiert.
Hat jemand eine Idee??
Gleiches Verhalten mit 3.1.3 und 2.6.6