Может ли метод __init__ в Python быть пустым

«Может ли метод __init__ в Python быть пустым» — вопрос из категории ООП, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, метод __init__ в Python может быть пустым. Если объекту не требуется начальная инициализация атрибутов, тело метода можно оставить пустым с помощью инструкции pass.

class EmptyInitializer:
    def __init__(self):
        # Этот метод ничего не делает при создании объекта
        pass

# Создание экземпляра не вызовет ошибки
instance = EmptyInitializer()

Ключевой аспект — наследование.

Если класс является потомком другого класса, крайне важно вызывать super().__init__(), даже если дочерний класс не добавляет новых атрибутов. Это гарантирует, что логика инициализации родительского класса будет выполнена.

class Parent:
    def __init__(self):
        self.initialized_in_parent = True
        print("Parent __init__ called")

class Child(Parent):
    def __init__(self):
        # Необходимо вызвать __init__ родителя
        super().__init__()
        # Дополнительных действий в Child не требуется

child_instance = Child()
# >>> Parent __init__ called
print(child_instance.initialized_in_parent)
# >>> True

Пустой __init__ может быть полезен в следующих случаях:

  • Классы, содержащие только статические методы или методы класса.
  • Классы-заглушки (stubs) или простые миксины (mixins).
  • Когда атрибуты объекта создаются динамически после инициализации.