Sobes.tech
Junior — Middle
84

Python'da typing modülündeki Protocol'un ne olduğunu açıklayabilir misiniz?

Sorulan şirketler
Бергман Инфотех

AI'dan gelen yanıt

sobes.tech yapay zeka

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