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

Что такое методы __len__ и __abs__ в Python и как их использовать?

Sobes Copilot

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

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

sobes.tech AI

__len__ возвращает длину объекта (количество элементов). Используется для реализации встроенной функции len(). Должен возвращать неотрицательное целое число.

__abs__ возвращает абсолютное значение объекта. Используется для реализации встроенной функции abs(). Может возвращать значение того же типа, что и объект, или другого числового типа.

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

class MyContainer:
    def __init__(self, items):
        self._items = items

    def __len__(self):
        return len(self._items)

    # Пример реализации __abs__ для кастомного типа, представляющего "меру"
    # В данном случае, возвращает абсолютное значение суммы элементов
    def __abs__(self):
        if all(isinstance(x, (int, float)) for x in self._items):
            return abs(sum(self._items))
        else:
            raise TypeError("can only abs() of numbers")

# Использование __len__
container = MyContainer([1, 2, 3])
container_empty = MyContainer([])
print(len(container))
print(len(container_empty))

# Использование __abs__
measure = MyContainer([-1, -2, 3])
print(abs(measure))