Sobes.tech
Back to questions
Junior — Middle
55

Могли бы вы объяснить, что из себя представляет Protocol в модуле typing в Python?

Companies where asked
Бергман Инфотех

Answer from AI

sobes.tech AI

Protocol в модуле typing Python — это способ описать интерфейс (набор методов и атрибутов), который должен поддерживать объект, без необходимости наследования от конкретного класса.

Это часть концепции "структурной типизации" (structural typing), где важна не принадлежность объекта к определённому классу, а наличие у него нужных методов и свойств.

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

from typing import Protocol

class SupportsClose(Protocol):
    def close(self) -> None:
        ...

class Resource:
    def close(self) -> None:
        print("Closed")


def cleanup(resource: SupportsClose) -> None:
    resource.close()

r = Resource()
cleanup(r)  # Работает, потому что Resource имеет метод close

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