Назад к вопросам
Junior
459
questionbank

Что такое дандер-методы?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Дендер-методы (также известные как "магические" или "специальные" методы) — это методы в классах Python, имена которых начинаются и заканчиваются двойным подчеркиванием (например, __init__, __str__). Они используются для реализации протоколов или переопределения поведения операторов и встроенных функций.

Примеры использования:

  • Инициализация объекта (__init__)
  • Представление объекта в виде строки (__str__, __repr__)
  • Перегрузка операторов (__add__ для сложения, __mul__ для умножения)
  • Управление контекстом (с использованием with) (__enter__, __exit__)
  • Создание итераторов (__iter__, __next__)
  • Работа с атрибутами (__getattr__, __setattr__)

Использование дандер-методов позволяет классам взаимодействовать с механизмом языка Python на более низком уровне, делая пользовательские объекты согласованными со встроенными типами данных.

# Пример использования __init__ и __str__
class MyClass:
    def __init__(self, value):
        self.value = value # Инициализация объекта

    def __str__(self):
        return f"Объект с значением: {self.value}" # Строковое представление объекта

obj = MyClass(10)
print(obj) # Вызовет __str__
# Пример использования __add__ (перегрузка оператора сложения)
class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        # Перегрузка оператора +
        return Vector(self.x + other.x, self.y + other.y)

    def __str__(self):
        return f"Vector({self.x}, {self.y})"

v1 = Vector(1, 2)
v2 = Vector(3, 4)
v3 = v1 + v2 # Вызовет __add__
print(v3)