【发布时间】:2020-06-19 09:12:27
【问题描述】:
我想用一个新实例替换类实例“模型”。 这应该发生在类内的重置函数中。我可以轻松地在类外执行model = Model(number = 2),但这不是我需要的。
对你来说,数字只是一个简单的例子。我的实际任务完全不同。 总而言之,我需要创建一个同名的新实例,因为我需要重新运行 __init__。这必须发生在重置函数中。我希望你明白我的意思。不幸的是,我的reset 函数不起作用:
class Model():
def __init__(self, number):
self.number = number
def reset(self):
self = Model(number = 2)
model = Model(number = 1)
print(model.number) #it is 1
model.reset()
print(model.number) #it is 1 aswell, should be 2 :(
【问题讨论】:
-
您不能更改对象的身份,如果这是您所要求的。您可以改变您的对象以具有相同的相关值,在这种情况下,reset 只需执行
self.number=2。但是,为什么mode = Model(2)不是您所需要的呢? -
您刚刚将新创建的实例分配给局部变量
self。您不能在原地用另一个对象替换对象。你reset真的应该通过设置它的属性来将实例设置为它想要的/初始状态。
标签: python python-3.x class