Python · Avançado · Inglês · Técnico
Protocol
Classe do módulo typing que define uma interface estrutural: qualquer classe com os métodos exigidos é aceita pelo verificador de tipos, sem precisar herdar dela.
Onde usar
É o duck typing com checagem estática, usado para descrever 'algo que tem close()' ou 'algo comparável'. Evita acoplar o código a uma hierarquia de herança.
Em código
from typing import Protocol
class Fechavel(Protocol):
def close(self) -> None: ...
def sair(x: Fechavel) -> None:
x.close()Exemplos
Define a Protocol instead of forcing inheritance.
Defina um Protocol em vez de forçar herança.
mypy accepts it because the class satisfies the Protocol.
O mypy aceita porque a classe satisfaz o Protocol.
Cuidado
Em execução nada é verificado, a menos que você use @runtime_checkable com isinstance, e mesmo assim só se confere a existência dos nomes.
Sinônimos
subtipagem estrutural