ExpertiDict

Python · Intermediário · Inglês · Técnico

duck typing

/dʌk ˈtaɪpɪŋ/substantivo

Estilo em que importa o objeto ter os métodos que o código usa, e não pertencer a uma classe específica. Se anda e grasna como um pato, serve.

Onde usar

Está por trás de funções que aceitam qualquer objeto parecido com arquivo ou iterável. Aparece em revisões quando alguém abusa de isinstance em vez de confiar no comportamento.

Em código

class Pato:
  def falar(self): return 'quack'

class Robo:
  def falar(self): return 'beep'

for x in (Pato(), Robo()):
  print(x.falar())

Exemplos

We rely on duck typing here, any file-like object works.

Contamos com duck typing aqui, qualquer objeto parecido com arquivo serve.

Why check the type? Just use duck typing.

Por que checar o tipo? Use duck typing.

Cuidado

O duck typing não checa nada antes de rodar: se o método faltar, o erro só aparece em execução, a menos que type hints com Protocol verifiquem isso antes.

Antônimos

tipagem nominal

Origem

Do teste do pato: se anda como um pato e grasna como um pato, então é um pato.

Veja também

Todos os termos de Python