Sobes.tech
Junior — Middle

Explique o conceito de duck typing e em que se diferencia da tipagem estática na programação.

sobes.tech IA

Resposta da IA

Duck typing é um conceito na programação em que o tipo de um objeto é determinado não pelo seu classe ou interface, mas pela presença de certos métodos e propriedades. Se um objeto se comporta como "pato" (tem os métodos necessários), é considerado adequado.

Diferença em relação à tipagem estática:

  • Na tipagem estática, os tipos são verificados em tempo de compilação, e os objetos devem corresponder explicitamente a tipos definidos.
  • No duck typing, a verificação ocorre em tempo de execução, e apenas a compatibilidade da interface (métodos/propriedades) é importante, não a herança ou tipos declarados.

Exemplo em Python (duck typing):

class Duck:
    def quack(self):
        print("Quack quack")

class Person:
    def quack(self):
        print("Posso grasnar como um pato")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Quack quack
make_it_quack(Person())  # Posso grasnar como um pato

Aqui, a função não se preocupa com o tipo do objeto, apenas com a existência do método quack.