python - 如何重新启动 "Class";它的静态变量

标签 python class

我说的是类,而不是对象。原因在于我创建了一个生成一些对象的类,但出于效率考虑,我确实为它的一些方法分配了一些静态变量。在某些情况下,我想重新初始化类,即将其所有静态变量设置为其初始值(如果有)。如何在不一一重新分配每个变量的情况下做到这一点?例如,如果我们有以下类:

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/

相关文章:

Python:修改属性值

python - Pandas : how to add Column name on dataframe on csv file

python - 如何在Python中将一列分成多列?

python - POST 请求始终返回 "Disallowed Key Characters"

excel - 在用户窗体中使用类模块变量(需要错误 '424' 对象)

java - 通过接口(interface)导入 map key

python - 从 Django 2.0 中的 LiveServerTestCase 获取正确的端口号

jquery - 如何将 javascript 数组发送到 cherrypy

c++ - 对于类构造函数,通过括号或等号赋值有什么区别?

class - 我们如何在uml类图中绘制抽象方法