【问题标题】:The object won't be deleted对象不会被删除
【发布时间】:2022-01-23 11:35:12
【问题描述】:
from selenium import webdriver
    
class Manager:
    def __init__(self):
        option = webdriver.ChromeOptions()
        option.add_argument('headless')
        
        self.driver = webdriver.Chrome(options=option)
        self.driver.set_window_size(1700,1000)

    def __del__(self):
        print("delete object")
        self.driver.quit()
    

if __name__ == '__main__':
    import chromedriver_autoinstaller
    chromedriver_autoinstaller.install(True)
    a = Manager()
    print('a')
    del a
    input()

没有调用析构函数
有人知道这个问题吗??
我想删除对象

【问题讨论】:

  • 表示同一个对象还有另一个引用。

标签: python selenium


【解决方案1】:

del 不会破坏任何对象,它只是取消链接引用。如果对 Manager 对象的其他活动引用仍然存在,或者如果垃圾收集器尚未运行以清除任何循环引用,则不会调用 __del__

如果您想保证某种清理操作,最好的办法是使用上下文管理器:

class Manager:
    def __init__(self):
        option = webdriver.ChromeOptions()
        option.add_argument('headless')
        
        self.driver = webdriver.Chrome(options=option)
        self.driver.set_window_size(1700,1000)

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print("exit context manager")
        self.driver.quit()

然后你可以像这样使用它:

with Manager() as a:
    print('a')
input()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多