首页 > 解决方案 > 跟踪指向更新列表的类实例

问题描述

我是 stackoverflow 和 OOP 的新手,

问题:我有一个类TrackList应该跟踪Element. Element是一个使用 webdriver 根据索引查找列表项的类。该列表有一项列表[0]。

class TrackList():
  def __init__(self):
    self.instance_list = {}

  def element_instance(self, index):
    if index not in self.instance_list:
      self.instance_list[index] = Element(index)
    return self.instance_list[index]

class Element():
  def __init__(self, index):
    self.index = index

  def _web_driver_search(self):
    #find a node based on the index provided i.e.
    driver.find_element(By.XPATH, f'//li[text()="{self.index}"]')
    print("new element found")

  ...

现在让我们假设列表已更新,因此列表 [0] = 列表 [1] 中的对象和新对象变为列表 [0]。不幸的是,由于 instance_list[0] 存在,当前的实现仍将返回旧对象。如何实现 instance_list[0] 指向新对象和 instance_list[1] 指向旧对象?我是否遗漏了什么或设计模式有误?

标签: pythonseleniumoopdesign-patterns

解决方案


instance_list = {}创建一个空的字典(字典/地图),而不是一个列表,所以instance_dict如果这是你想要的,那么将它称为 a 会更清楚。

听起来您想改用 a stack,但如果不知道 Web 驱动程序列表的作用,我不能肯定地说。

如果 web 驱动程序添加另一个元素时 index 的含义发生了变化,则不要存储索引,只需array通过索引从 an 中获取元素。同样,我取决于网络驱动程序的功能,您需要模仿这种行为。


推荐阅读