python наследование, проектирование
У меня есть класс ChromeDriver для работы с вебдрайвером, который в конструкторе содержит его инициализацию. Есть еще класс SomeSite, который наследует класс ChromeDriver и все его методы для работы с движком, типа открытие ссылки + обработка возможной ошибки и тд. Объект класса SomeSite создается в цикле несколько раз, при этом происходит и инициализация самого вебдрайвера, т.е. создается много окон, что мне не нужно. То есть, я хочу создавать объекты класса SomeSite, чтобы при этом инициализация (ChromeDriver.init(self)) происходила только один раз.
class ChromeDriver:
def __init__(self):
try:
self.__driver = webdriver.Chrome()
except WebDriverException:
pass
class SomeSite(ChromeDriver):
def __init__(self):
ChromeDriver.__init__(self)
Ответы (1 шт):
Организуйте какой-нибудь флаг, что ChromeDriver уже инициализирован, и не дёргайте init второй раз. Например:
class SomeSite(ChromeDriver):
initialised = False
def __init__(self):
if not SomeSite.initialised:
SomeSite.initialised = True
ChromeDriver.__init__(self)
Если не хотите явно указывать имя класса для доступа к статической переменной, то можно обратиться к ней как self.__class__.initialised.