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

Как гарантировать контракт для функции в Python

В Python нет строгой проверки типов на этапе компиляции, но можно использовать следующие подходы:

  1. Type Hints + mypy
    Аннотации типов + статический анализатор:
    python
    from typing import Protocol
    
    class Greeter(Protocol):
        def greet(self, name: str) -> str: ...
    
    def hello_world(g: Greeter) -> None:
        print(g.greet("World"))  # mypy проверит соответствие
  1. Декораторы для проверки во время выполнения

    python
    def validate_types(func):
        def wrapper(*args, **kwargs):
            # Проверка типов args/kwargs по аннотациям func.__annotations__
            return func(*args, **kwargs)
        return wrapper
    
    @validate_types
    def process(data: list[int]) -> int: ...
  2. ABC (Abstract Base Classes)

    python
    from abc import ABC, abstractmethod
    
    class DataProcessor(ABC):
        @abstractmethod
        def process(self, data: bytes) -> str: ...
  3. Pydantic/Beartype
    Библиотеки для строгой валидации типов в runtime.

Лучший подход зависит от контекста: для API — Pydantic, для библиотек — Protocol + mypy, для критичного кода — runtime-проверки.

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

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

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

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