我也是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")
...
现在让我们假设列表已更新,因此list [0] = list [1]中的对象和一个新对象成为list [0]。不幸的是,由于instance_list [0]存在,当前的实现仍会返回旧对象。如何实现instance_list [0]指向新对象,instance_list [1]指向旧对象?我是否缺少某些东西或设计模式有误?
答案 0 :(得分:0)
instance_list = {}
创建一个空的dict(字典/地图),而不是列表,因此如果您要使用的是instance_dict
会更清楚。
听起来您想改用stack
,但是我不能肯定地说不知道Web驱动程序列表如何工作。
如果在Web驱动程序添加另一个元素时索引的含义发生了变化,则不存储索引,只需通过索引从array
获取该元素。再次,我取决于Web驱动程序的功能,您需要模仿该行为。