知道是否有办法使以下代码正常工作
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
类似于下面的内容,可以安全地用于更复杂的对象(例如 django 模型,用于热交换实例所引用的数据库条目)
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
self = Test(3)
正在重新绑定本地名称self
,没有外部可观察到的影响。
分配self.__dict__
(除非你正在谈论实例__slots__
或者来自具有重要元类的类)通常是可以的,也是如此self.__init__(3)
重新初始化实例。不过我更喜欢有一个特定的方法self.restart(3)
which knows它在一个已经初始化的实例上被调用,并执行任何需要的操作来满足特定和不寻常的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)