Классы и объекты

1. Что такое класс

  • Класс — это шаблон (описание), по которому создаются объекты.

  • Он описывает состояние (атрибуты) и поведение (методы) будущих объектов.

  • В Python класс создаётся с помощью ключевого слова class.


2. Что такое объект

  • Объект — это экземпляр класса.

  • Каждый объект имеет свои данные (атрибуты) и может выполнять действия (методы), определённые в классе.


3. Пример

class Car:
    # Конструктор
    def __init__(self, brand, model):
        self.brand = brand  # Атрибут экземпляра
        self.model = model

    # Метод экземпляра
    def drive(self):
        print(f"{self.brand} {self.model} поехала!")

# Создаём объект (экземпляр класса)
car1 = Car("Toyota", "Camry")
car2 = Car("BMW", "X5")

# Вызываем методы
car1.drive()  # Toyota Camry поехала!
car2.drive()  # BMW X5 поехала!

4. Важные моменты для собеседования

  • self — ссылка на текущий объект (экземпляр класса).

  • У класса есть:

    • атрибуты класса (общие для всех объектов),

    • атрибуты экземпляра (уникальные для каждого объекта).

  • Методы класса (@classmethod) и статические методы (@staticmethod) не требуют обязательного self.


5. Применение в автоматизации тестирования

  • Page Object Model: каждый класс — это страница, а объекты — конкретные страницы в тестах.

  • Тестовые данные: можно хранить данные в атрибутах объекта, а методы — для работы с ними.

  • Драйверы: класс может представлять драйвер браузера, а объект — конкретный запущенный экземпляр браузера.


6. Мини-пример POM

class LoginPage:
    def __init__(self, driver):
        self.driver = driver

    def open(self):
        self.driver.get("https://site.com/login")

    def login(self, username, password):
        print(f"Ввожу логин: {username}, пароль: {password}")
        # self.driver.find_element(...).send_keys(username)
        # self.driver.find_element(...).send_keys(password)
        # self.driver.find_element(...).click()

# В тесте
driver = object()  # Заглушка вместо реального веб-драйвера
page = LoginPage(driver)
page.open()
page.login("admin", "1234")

Last updated

Was this helpful?