Se Parece, Nada e Grasna... É um Pato!
Imagine que você está em um lago e vê uma criatura nadando, grasnando e balançando as penas. Você não precisa de um RG de pato para saber que... é um pato! Em programação, especialmente em Python, usamos esse mesmo raciocínio: "Se anda como um pato, nada como um pato e grasna como um pato, então é um pato".
O que é Duck Typing?
Duck Typing é um conceito onde o tipo de um objeto é determinado pelo seu comportamento (métodos e atributos), e não pela sua classe ou herança. Ou seja, não importa o "rótulo" do objeto, mas sim o que ele sabe fazer!
Exemplo em Python
class Duck:
def swim(self):
print("The duck is swimming!")
def quack(self):
print("Quack quack!")
class Person:
def swim(self):
print("The person is swimming!")
def quack(self):
print("The person says quack (just for fun)!")
# Function that accepts anything that swims and quacks
def show_duck(obj):
obj.swim()
obj.quack()
show_duck(Duck()) # The duck is swimming! Quack quack!
show_duck(Person()) # The person is swimming! The person says quack (just for fun)!
Repare que a função show_duck não se importa se o objeto é um Duck ou uma Person. Se tem swim() e quack(), está valendo!
Por que Duck Typing é legal?
- Deixa o código mais flexível e divertido!
- Permite criar funções genéricas que aceitam qualquer "pato" (ou seja, qualquer objeto com os métodos certos).
- Evita checagens desnecessárias de tipo, tornando o código mais limpo.
Mas cuidado com os patos falsos!
Se você tentar passar um objeto que não sabe nadar ou grasnar, vai levar um AttributeError! Então, sempre tenha certeza de que seu "pato" realmente sabe fazer o que você espera.
Conclusão
Duck Typing é uma das coisas mais divertidas e poderosas do Python. Use e abuse, mas lembre-se: nem todo mundo que faz "quack" é pato de verdade!
0 Comentário
Deixe seu Comentário!