Как заставить мусор класса собирать свои атрибуты или данные, когда его экземпляр имеет значение None? - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь протестировать 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()]


Я ожидаю, что стек будет пустым на втором юнит-тесте, потому что это новый объект. Но это не так.

...