Python мануфактураJavaDesign Patterns для автоматизаторів

Терміни, нюанси та джерела

Нюанс · 3:00

__init__ — initializer, не етап створення instance

У повсякденній мові __init__ часто називають constructor, але Python data model розділяє __new__, який створює instance, і __init__, який налаштовує вже створений instance.

__init__, self, page та принципи ООП →

Що змінилося після запису · 8:16

__init__.py не є абсолютною вимогою

У відео __init__.py пояснено як ознаку Python package і місце для публічних imports.

Для regular package це коректна практична модель, але Python 3.3+ підтримує implicit namespace packages, де namespace directory навмисно не містить __init__.py.

__init__, self, page та принципи ООП →

Приклад коду · 3:00

Instance state через self та __init__

page є instance attribute: кожен PageObject отримує власний стан через __init__, а method читає його через self.

Команда друкує Page: checkout і assertion проходить.

__init__, self, page та принципи ООП →

Термін · 8:16

namespace package

Package, який може бути розподілений між кількома distributions. Native namespace packages доступні з Python 3.3 і не мають __init__.py у namespace directory.

__init__, self, page та принципи ООП →

Java · Сесії: AMA та PMP · 3:00–6:00

`__init__` задає обов’язковий стан об’єкта

Через `__init__` клас отримує залежності й початковий стан, без яких його методи не мають сенсу. Наприклад, компонент приймає кореневий locator, а Page Object — Playwright `page`; наступні методи перевикористовують ці значення через `self`. У повсякденній мові `__init__` часто називають constructor. Технічно екземпляр створює `__new__`, а `__init__` ініціалізує вже створений об’єкт. Для звичайного Page Object достатньо реалізувати саме `__init__`.

__init__, self, page та принципи ООП →

Java · Сесії: AMA та PMP · 8:16–11:51

Для чого потрібен `__init__.py`

Наявність `__init__.py` робить директорію звичайним Python package і може визначати його зручний публічний API через imports або `__all__`. Це допомагає IDE, імпортам і читачеві зрозуміти межу модуля. Сучасний Python також підтримує namespace packages без `__init__.py`, тому файл не є абсолютною вимогою для кожної імпортованої директорії. У навчальному проєкті явний package зазвичай простіший і передбачуваніший.

__init__, self, page та принципи ООП →
Запитати в чаті про «init» →