python - 更改实例返回的内容 python
问题描述
我为 selenium webdriver 创建了一个单例包装器。
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class Driver(metaclass=Singleton):
"""Ensures theres only 1 Driver open at any time.
If the driver is closed, tries to quit the previous
instance, and recreates a new one"""
def __init__(self):
self._driver = self.load_selenium_driver()
@staticmethod
def load_selenium_driver():
_chrome_driver_locn = CHROME_DRIVER_LOCATION
_driver = webdriver.Chrome(_chrome_driver_locn)
return _driver
@property
def driver(self):
"""Creates a new driver if the previous one is closed,
and quits the instance of the chrome driver."""
if self._web_browser_is_open():
return self._driver
else:
try:
self._driver.quit()
finally:
self._driver = self.load_selenium_driver()
return self._driver
def _web_browser_is_open(self):
try:
self._driver.title
return True
except WebDriverException:
return False
运行a = Driver()
我想访问Driver.driver
方法, in a
,所以我不需要做a.driver.get('google.com')
,但是a.get('google.com')
.
问题:
如何创建 Driver 的实例,返回driver
对象(在属性中找到Driver.driver
),而不是Driver
?
解决方案
从评论中的讨论来看,我所要求的是不可能的。
推荐阅读
- java - 评论正在java中执行
- javascript - 过滤包含相同键的对象数组:值对
- android - E/flutter(8084):[错误:flutter/lib/ui/ui_dart_state.cc(157)]未处理的异常:SocketException:操作系统错误:连接被拒绝
- java - Java 8:初始化一个键的哈希集的最短方法是什么?
- java - 如何在 NestedScrollView 中逐步加载 RecyclerView 项目?
- docker - Neo4j Docker - 管理员导入 - 找不到数据库
- angular - 使用接口构建 graphql 查询
- sql - 如何从表中选择 * 但在一列上不同并在另一列上排序
- python - 在python中将图片保存在数据集中的自我限制问题
- python - 在 python 中使用 StyleFrame 为文本着色