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