Django python - 类属性值在请求之间共享吗?

use*_*391 3 python oop django

假设我有以下 Python 类:

class MyClass():
    cls_att = []
Run Code Online (Sandbox Code Playgroud)

现在,在其中一项请求中,我正在执行以下操作:

MyClass.cls_att.append('a')
Run Code Online (Sandbox Code Playgroud)

如果紧随此“追加”之后,另一个请求将获取该属性:

lst = MyClass.cls_att
Run Code Online (Sandbox Code Playgroud)

他们会在“lst”中得到什么?是空列表还是 ['a']?

Dan*_*man 5

这取决于。

由同一进程提供服务的任何请求都将使用同一类,因此将看到添加的数据。由不同进程提供服务的请求将看到该进程上先前请求添加的任何数据。

因此,由于您无法预测哪个进程将满足任何特定请求,因此您不能指望这种情况发生或不发生。换句话说,根本不要这样做。