python对象,垃圾收集

Rom*_* M. 4 python

我有一个python对象,它收集一些请求数据,所以我可以根据我通过GET方法收到的过滤器和分类器创建模型查询.(排序= ID&为了= DESC ...)

class Search( object ):

    sorters = []
    filters = []
Run Code Online (Sandbox Code Playgroud)

如果请求具有过滤器和分类器,则类属性将填充正确的参数.这很好用,查询构建正常.问题是当我触发第二个请求时,分拣机和过滤器会保留前一个请求中的值,因此Search对象不是新的但是持久的.

知道它为什么会这样吗?顺便说一下,我是python的新手,PHP(我的区域)将只为每个请求实例化一个新对象.

Liq*_*ire 7

因为您正在以这种方式创建类变量而不是成员变量.类变量在每个实例之间共享(它们属于类,而不是实例); 它们与其他语言中的静态成员变量类似.

要创建成员变量,需要在构造函数中初始化它们,如下所示:

class Search(object):
    def __init__(self):
        self.sorters = []
        self.filters = []
Run Code Online (Sandbox Code Playgroud)