Python 单例模式
Python 单例模式
在众多设计模式中,单例模式对于在测试开发过程中应用的还是比较广泛的,例如log, driver实例等。都需要使用到我们的单例模式
什么是单例模式?
用我自己的理解的话语来说:“单例模式就是如果一个地方都需要用到这个东西(对象),那么我们只需要创建一次就可以实现维护全局状态的使用”。就是我声明了在用的时候只需还是最初的那个即可,无需再次创建!
应用常见场景
单例模式一般用于对于共享资源的并发访问, 例如:数据库的连接, 日志的生成, 全局的工具对于测试而言就是我们的driver实例化。
代码解释
1 |
|
可以看出上述的id 是一致的也就是我们实现了单例模式。
下面以初始化driver为例来展示实际应用
1 |
|
上述代码解释:
_instance = None:这是一个类属性,用于存储唯一的实例。它初始值为 None,表示还没有创建实例。
new(cls, *args, **kwargs):这是 Python 类中的一个特殊方法,用于创建类的实例。这个方法被重写,确保只创建一次实例。
如果 _instance 为 None,说明还没有创建实例,则创建一个新的 SeleniumSingleton 实例并赋给 _instance。
然后,创建 webdriver.Chrome 实例,并将其保存到 _instance._driver 属性中。
最后,返回 _instance。
getattr(self, name):这个方法用于处理属性访问。当使用 SeleniumSingleton 实例访问属性时,它会调用这个方法。
它从 self._driver 属性中获取对应属性,并返回给调用者。
代码的用途:
这段代码通过单例模式,确保只创建一次 Selenium WebDriver 实例。这样,在不同的地方使用 Selenium WebDriver 时,都可以访问同一个实例,避免重复创建,提高代码效率。
总结
单例模式在程序编写中有广泛的应用,大家可以把我这个设计模式,做到更加高效的开发!