vin*_*ios 7 python class instance hotswap
任何想法是否有办法使以下代码工作
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
Run Code Online (Sandbox Code Playgroud)
类似于以下安全用于更复杂的对象(如django模型,热交换实例所指的db条目)
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
Run Code Online (Sandbox Code Playgroud)
self = Test(3)
正在重新绑定本地名称self
,没有外部可观察的效果.
分配self.__dict__
(除非您在使用__slots__
具有非平凡元类的类中讨论实例)通常是可以的,因此self.__init__(3)
重新初始化实例也是如此.但是我更喜欢有一个特定的方法self.restart(3)
,它知道它已经在一个已经初始化的实例上调用,并且做了满足特定和不寻常情况所需的一切.
归档时间: |
|
查看次数: |
4191 次 |
最近记录: |