Встречается на собеседованиях • сегодня

Какие знаешь способы реализовать класс по проверки получаемых данных

В Python есть несколько подходов для валидации данных в классе:

  1. Использование @property и сеттеров
python
class User:
    def __init__(self, age):
        self.age = age  # Вызовет сеттер

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, value):
        if not isinstance(value, int) or value < 0:
            raise ValueError("Age must be positive integer")
        self._age = value
  1. Дескрипторы
python
class PositiveNumber:
    def __set__(self, obj, value):
        if value <= 0:
            raise ValueError("Value must be positive")
        obj.__dict__[self.name] = value

    def __set_name__(self, owner, name):
        self.name = name

class Product:
    price = PositiveNumber()
  1. Библиотеки
  • pydantic (валидация + парсинг)
  • attrs + validators
  • marshmallow (сериализация + валидация)
  1. Валидация в __init__/методах
python
def __init__(self, email):
    if "@" not in email:
        raise ValueError("Invalid email")
    self.email = email

Выбор зависит от сложности валидации и требований к производительности. Для простых случаев хватит @property, для сложных — лучше использовать pydantic.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы