我说的是类,而不是对象。原因在于我创建了一个生成一些对象的类,但出于效率考虑,我确实为它的一些方法分配了一些静态变量。在某些情况下,我想重新初始化类,即将其所有静态变量设置为其初始值(如果有)。如何在不一一重新分配每个变量的情况下做到这一点?例如,如果我们有以下类:
class tst:
def lol(self):
self.lol.__dict__['static_magic'] = True
分配一些对象后:
# A demonstration of how these work and are the same if one is activated.
>>> a = tst()
>>> b = tst()
>>> a.lol()
>>> a.lol.__dict__
{'static_magic': True}
# Then when running object b (without lol()) has also the variable static magic.
>>> b.lol.__dict__
{'static_magic': True}
之后,我决定是时候重新启动其所有静态变量并开始从乞讨开始分配。我想要的是以下内容。
>>> c = tst()
>>> c.lol.__dict__
{}
应该做什么? 拥有该函数的副本将不起作用(静态是交叉引用的),删除和导入也会失败并且看起来不太好。
最佳答案
没有什么可以阻止您将类定义放入函数中,然后只需重新运行该函数即可重新创建该类。
>>> def make_foo():
... global Foo
... class Foo:
... X = 'original value'
...
>>> make_foo()
>>> Foo.X
'original value'
>>> Foo.X = 'new value'
>>> Foo.X
'new value'
>>> make_foo()
>>> Foo.X
'original value'
关于python - 如何重新启动 "Class";它的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51098231/