首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python对象,垃圾回收

python对象,垃圾回收
EN

Stack Overflow用户
提问于 2011-06-22 01:44:25
回答 2查看 785关注 0票数 4

我有一个python对象,它收集一些请求数据,因此我可以根据通过GET方法接收到的过滤器和排序器创建模型查询。(sort=id&order=DESC...)

代码语言:javascript
复制
class Search( object ):

    sorters = []
    filters = []

如果请求具有筛选器和排序器,则使用正确的参数填充类属性。这工作得很好,查询构建得也很好。问题是,当我触发第二个请求时,排序器和过滤器会保留前一个请求中的值,因此搜索对象不是新的,而是持久的。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 01:50:26

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

要创建成员变量,需要在构造函数中对其进行初始化,如下所示:

代码语言:javascript
复制
class Search(object):
    def __init__(self):
        self.sorters = []
        self.filters = []
票数 7
EN

Stack Overflow用户

发布于 2011-06-22 01:52:23

如果您希望sortersfilters作为Search的实例成员,则需要这样定义它们。

代码语言:javascript
复制
class Search( object ):
    def __init__(self, sorters=None, filters=None):
        self.sorters = [] if sorters == None else sorters
        self.filters = [] if filters == None else filters

这将允许您通过在初始化时提供sortersfilters,或者稍后将它们分配给对象来实例化。或者两者都有。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6429627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档