ExpertiDict

Python · Avançado · Inglês · Técnico

Protocol

/ˈpɹoʊɾəˌkɔl/substantivo

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

Veja também

Todos os termos de Python