Sobes.tech
Junior — Middle
82

Könnten Sie erklären, was Protocol im Modul typing in Python ist?

Unternehmen wurden gefragt
Бергман Инфотех

Antwort von AI

sobes.tech KI

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 позволяет описывать требования к объектам для статической проверки типов, не заставляя их явно наследоваться от какого-либо базового класса.