【问题标题】:Keep track of class instances pointing to updated list跟踪指向更新列表的类实例
【发布时间】:2019-09-18 13:11:26
【问题描述】:

我是 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] 指向旧对象?是我遗漏了什么还是设计模式有误?

【问题讨论】:

    标签: python selenium oop design-patterns


    【解决方案1】:

    instance_list = {} 创建一个空的字典(字典/地图),而不是一个列表,所以如果这是您的意图,将其称为 instance_dict 会更清楚。

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2019-11-17
      • 1970-01-01
      相关资源
      最近更新 更多