簡體   English   中英

python對象,垃圾收集

[英]python objects, garbage collection

我有一個python對象,它收集一些請求數據,所以我可以根據我通過GET方法收到的過濾器和分類器創建模型查詢。 (排序= ID&為了= DESC ...)

class Search( object ):

    sorters = []
    filters = []

如果請求具有過濾器和分類器,則類屬性將填充正確的參數。 這很好用,查詢構建正常。 問題是當我觸發第二個請求時,分揀機和過濾器會保留前一個請求中的值,因此Search對象不是新的但是持久的。

知道它為什么會這樣嗎? 順便說一下,我是python的新手,PHP(我的區域)將只為每個請求實例化一個新對象。

因為您正在以這種方式創建類變量而不是成員變量。 類變量在每個實例之間共享(它們屬於類,而不是實例); 它們與其他語言中的靜態成員變量類似。

要創建成員變量,需要在構造函數中初始化它們,如下所示:

class Search(object):
    def __init__(self):
        self.sorters = []
        self.filters = []

如果您希望將sortersfilters作為Search實例成員,則需要對其進行定義。

class Search( object ):
    def __init__(self, sorters=None, filters=None):
        self.sorters = [] if sorters == None else sorters
        self.filters = [] if filters == None else filters

這將允許您通過在初始化時提供sorters filtersfilters來實例化,或者稍后將它們分配給對象。 或兩者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM