Python · Intermediário · Inglês · Técnico
duck typing
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.