Ich möchte eine Kopie eines Python-Klassenobjekts erstellen, das sich nicht ändert, wenn sich das ursprüngliche Objekt ändert. Hier ist mein einfaches Arbeitsbeispiel:Kopie der Objektinstanz in Python erstellen
class counterObject:
def __init__(self):
self.Value = 0
def incrementValue(self):
self.Value += 1
def printValue(self):
print(self.Value)
A = counterObject()
A.incrementValue()
A.printValue() #Prints 1
B = A
A.incrementValue()
B.printValue() #Currently prints 2. Want to be 1
Von meinem Verständnis, wenn ich B = A gesetzt ist, bedeutet dies einfach, B zeigt auf das Objekt A. Daher, wenn ich eine Änderung ändert B als auch. Ist es möglich, B stattdessen eine neue Instanz mit den gleichen Eigenschaften wie A zu machen, ändert sich aber nicht, wenn ich A ändere? In meinem obigen Beispiel möchte ich, dass der Wert für B bei 1 bleibt, wenn ich A inkrementiere.
Wenn A und B Listen statt Objekte wären, würde ich B = Liste (A) schreiben. Ich frage mich, ob es eine ähnliche Methode für Klassenobjekte gibt?
Vielen Dank im Voraus für Ihre Hilfe!
Es klingt wie Sie ein Singleton wollen ... –
Python hat für Sie: Von den Python-Dokumentation: https://docs.python.org/2 /library/kopie.html – DaOnlyOwner