Jede Idee, wenn es ein Weg gibt den folgenden Code zu machenändert Klasseninstanz innerhalb einer Instanzmethode
class Test(object):
def __init__(self, var):
self.var = var
def changeme(self):
self = Test(3)
t = Test(1)
assert t.var == 1
t.changeme()
assert t.var == 3
zu arbeiten, ist so etwas wie die folgenden sicher für komplexere Objekte zu verwenden (wie django Modelle, zu heiß vertauschen Sie den DB-Eintrag, auf den sich die Instanz bezieht)
class Test(object):
def __init__(self, var):
self.var = var
def changeme(self):
new_instance = Test(3)
self.__dict__ = new_instance.__dict__
t = Test(1)
assert t.var == 1
t.changeme()
assert t.var == 3
Warum? Sie wollen eindeutig eine neue Instanz, warum nicht nur eine neue Instanz machen und diese eine wegzuwerfen? Erklären Sie bitte den Anwendungsfall. –