删除对象属性时,需要删除所有分散在应用程序周围的对后代属性的引用:
from seleniumwire import webdriver
from selenium.common.exceptions import ElementClickInterceptedException,NoSuchElementException
import logging
def scrape_website(url):
# Configure browser driver
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--headless')
#Instantiate driver and navigate to URL
driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(30)
driver.get(url)
因此,我要么需要一种方法来删除对后代属性的所有引用,要么我需要一种方法来表明该引用已绑定到已删除的父对象,并在我的计算中将其忽略。
什么是实现此目的的正确/最可维护的方法?
答案 0 :(得分:2)
除非出于性能原因确实需要将所有子代保留在一个数组中,否则更简单的解决方案是将all_children数组废弃,转而使用返回所有子代数组的函数,例如
function getAllChildren () {
var all_children = [];
/* pseudocode:
foreach people(children) {
foreach children(child) {
all_children.push(child);
}
}
*/
return all_children;
}
这样,如果删除Mary或Homer,则调用此函数将自动反映出删除。
答案 1 :(得分:0)
如果我正确理解了这个问题,则您担心在从对象数组中删除父对象后,子对象仍然存在于内存中。 javascript并非如此,因为该语言未实现真正的类。因此,新ChildClass()的每个副本都是按值而不是引用传递的。
因此,您无需跟踪子引用即可对其进行清理。