Как реализовать класс прямоугольника с методом площади

Конструктор проверяет размеры и сохраняет их в экземпляре, а area возвращает произведение. Проверка type(value) is int исключает bool, который иначе проходит isinstance(value, int).

Короткий ответ

Что ответить на собеседовании

Конструктор проверяет размеры и сохраняет их в экземпляре, а area возвращает произведение. Проверка type(value) is int исключает bool, который иначе проходит isinstance(value, int).

Подробный разбор

Ответ с пояснениями

Условие

На Python нужен класс Rectangle(width, height) с полями width и height и методом area(). В этой задаче размеры — положительные целые числа; логические значения и остальные типы запрещены. Реализуйте проверку и пример использования.

Ответ

Конструктор проверяет размеры и сохраняет их в экземпляре, а area возвращает произведение. Проверка type(value) is int исключает bool, который иначе проходит isinstance(value, int).

class Rectangle:
    def __init__(self, width, height):
        for value in (width, height):
            if type(value) is not int:
                raise TypeError('Размер должен быть целым числом')
            if value <= 0:
                raise ValueError('Размер должен быть положительным')
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

rectangle = Rectangle(3, 4)
assert rectangle.area() == 12

Проверки относятся к созданию объекта. Поля в данном варианте открыты: прямое присваивание после создания не валидируется. Если инвариант нужен на всём сроке жизни объекта, следует добавить управляемые свойства либо запретить изменение размеров.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее