ich bin gerade auf ein Verhalten von Python beim Umgang mit den optionalen Attributen von Objekten gestoßen, dass mich sehr überrascht hat. Ich habe eine eigene Klasse mit mehreren optionalen Argumenten, von denen einige Listen sind. Wird das Argument beim Instantiieren nicht angegeben, sollten diese Listen eigentlich leer sein. Stattdessen scheint so was wie ein Klassenattribut zu entstehen.
Ich würde mich sehr freuen, wenn mir jemand helfen könnte, das zu verstehen, und natürlich auch darüber, wenn jemand einen Tipp hätte, wie ich das gewünschte Verhalten erreiche.
Viele Grüße
Thorsten
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Klasse:
def __init__(self,name,liste=[]):
self.name = name
self.liste = liste
instanz = Klasse('erste')
instanz.liste.append('element')
print(instanz.name,instanz.liste[0])
instanz = Klasse('zweite')
print(instanz.name,instanz.liste[0])
instanz_ = Klasse('dritte')
print(instanz_.name,instanz_.liste[0])
instanz_.liste.append('weiteres element')
print(instanz.name,instanz.liste[1])
Code: Alles auswählen
erste element
zweite element
dritte element
zweite weiteres element