当其实例设置为None时,如何使类垃圾回收其属性或数据?

时间:2019-06-01 11:48:37

标签: python unit-testing class object garbage-collection

我正在尝试对解析后包含元素的html解析器进行单元测试。 但是,当我创建类的另一个实例时,它将继承第一个解析器存储的所有元素。

我尝试使用del或尝试将第一个实例设置为None。但是他们两个都没有摆脱彼此直接传递的元素。

这是我代码中的简短演示。


class Base:
    stack = []

    def parse(self):
       pass

class Page(Base):
   def get(url):
       pass

pg = Page()
pg.get(url)
pg.parse()
pg.stack    # => [Element(), Element()]


class TestWebPageElements(unittest.TestCase):

    def setUp(self):
        self.pg = Page()
    def tearDown(self):
        self.pg = None

    def test_parsing(self):
       self.pg.get(url)
       self.pg.parse()
       self.pg.stack    # => [Element(), Element()]


class TestWebPageElements2(unittest.TestCase):

    def setUp(self):
        self.pg = Page()
    def tearDown(self):
        self.pg = None

    def test_parsing(self):

       # XXX: Here the stack is already filled why?

       self.pg.stack    # => [Element(), Element()]


我希望第二个单元测试中的堆栈为空,因为它是一个新对象。但事实并非如此。

0 个答案:

没有答案