Ich bin neu in Python und ich habe gerade die Eigenschaften entdeckt. Es funktioniert gut, wenn ich es auf eine einfache Variable versuche, aber ich kann es nicht auf einer Liste arbeiten lassen. Wenn Sie den folgenden Code ausführen, ruft er zweimal den Getter und nicht den Setter auf. Ich weiß, dass in meinem Beispiel die Eigenschaft keinen Mehrwert hat, aber es ist zu vereinfachen.Python-Eigenschaft auf einer Liste
class C:
def __init__(self):
self._x = [1, 2, 3]
@property
def x(self):
print("getter")
return self._x
@x.setter
def x(self, value):
print("setter")
self._x = value
c = C()
c.x[1] = 4
print(c.x[1])
Hat jemand eine Vorstellung davon, was ich falsch mache?
Willst du wirklich c [1] = 3 anrufen? Was wäre, wenn die Klasse zwei Listen hätte ?! –
@MahshidZeinaly Wenn die Klasse zwei Listen hat, dann sollten Sie wahrscheinlich nicht die Methode "__getitem__" oder "__setitem__" verwenden, oder Sie müssen sie stark modifizieren. Ich habe nur über eine Liste nachgedacht, als ich den Code geschrieben habe, aber ohne weitere Informationen ist das ein wenig mehrdeutig. Welche sollte man wann ändern? Oder beides? – MSeifert