Ich habe versucht, ein physisches Modell mit Python zu erstellen, als ich auf ein unbeabsichtigtes Verhalten von Listen als Eigenschaft von Objekten stieß. Bei der Aktualisierung eines der Elemente in der Liste eines Objekts werden auch die entsprechenden Elemente in anderen Objekten derselben Klasse aktualisiert. Ich habe das folgende minimale Beispiel gemacht, für das dieses Verhalten repliziert wird: < /p>
class testClass:
def __init__(self):
pass
a = [0, 0]
b = 0
def __str__(self):
return f"a = {self.a[0]}, b = {self.b}"
def acc(self, i):
self.b += i
def inc(self, c):
self.a[0] += self.b * c
test = [testClass(), testClass()]
test[0].acc(1)
print(f"object 1: {test[0]}") # object 1: a = 0, b = 1
print(f"object 2: {test[1]}") # object 2: a = 0, b = 0
test[1].acc(2)
print(f"object 1: {test[0]}") # object 1: a = 0, b = 1
print(f"object 2: {test[1]}") # object 2: a = 0, b = 2
test[0].inc(0.3)
print(f"object 1: {test[0]}") # object 1: a = 0.3, b = 1
print(f"object 2: {test[1]}") # object 2: a = 0.3, b = 2 [This is unintended behaviour]
test[1].inc(1)
print(f"object 1: {test[0]}") # object 1: a = 2.3, b = 1 [This is unintended behaviour]
print(f"object 2: {test[1]}") # object 2: a = 2.3, b = 2
< /code>
frustrierend, ich habe dieses Problem nirgendwo online dokumentiert, aber es scheint ein so grundlegendes Problem mit Klassen zu sein. Hat noch jemand damit begegnet? Mache ich etwas wirklich dumm, ohne es zu merken? Jede Hilfe wäre geschätzt.
Listen Sie in Objekteigenschaftsaktualisierungen über alle Objekte derselben Klasse auf [Duplikat] ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Sind alle Objekte in Java erstellt, sind statische Objekte in der Hauptmethode?
by Anonymous » » in Java - 0 Replies
- 24 Views
-
Last post by Anonymous
-
-
-
Wie können Sie Superset-Listen aus einer Liste von Listen in Python entfernen?
by Anonymous » » in Python - 0 Replies
- 29 Views
-
Last post by Anonymous
-