globalList = []
class MyList:
def __init__(self):
self._myList = [1, 2, 3]
@property
def myList(self):
return self._myList + globalList
@myList.setter
def myList(self, val):
self._myList = val
mL1 = MyList()
print("myList: ", mL1.myList)
mL1.myList.append(4)
print("after appending a 4, myList: ", mL1.myList)
mL1.myList.extend([5,6,"eight","IX"])
print("after extend, myList: ", mL1.myList)
Ergebnis:Python Dekoration Eigenschaft Setter mit Liste
myList: [1, 2, 3]
after appending a 4, myList: [1, 2, 3]
after extend, myList: [1, 2, 3]
Das Problem, das ich bin vor ist, dass mL1.myList.append (4) und mL1.myList.extend ([5,6, "acht "," IX "]) ändern nicht das _myList-Attribut im mL1-Objekt. Wie kann ich das Problem lösen?
Könnten Sie den Einzug beheben? Ich bin mir nicht sicher, wo die zweite Fiktion einzuordnen ist. –
Es ist mir nicht klar, welches Verhalten Sie erwarten würden. Sollte 'append()' zu '_myList' hinzufügen (was bedeutet, dass die Werte nicht am Ende hinzugefügt werden, wie man es erwarten würde) oder zu' globalList'? Wie auch immer, es ist ziemlich klar, dass dies nicht funktionieren würde, da der zurückgegebene Wert eine neue Liste ist, die durch Verketten zweier anderer Listen erzeugt wird. Erweiterung, die nicht irgendwie zurück modifizieren wird. –
append() sollte zu _myList hinzugefügt werden, und so extend() – user14042