对象不会被删除
Posted
技术标签:
【中文标题】对象不会被删除【英文标题】: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()
没有调用析构函数 有人知道这个问题吗?? 我想删除对象
【问题讨论】:
表示同一个对象还有另一个引用。 【参考方案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()
【讨论】:
以上是关于对象不会被删除的主要内容,如果未能解决你的问题,请参考以下文章