Duck Typing

Este conceito é adaptado da seguinte expressão: Se parece um pato, nada como um pato e grasna como um pato, então provavelmente é um pato.

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?

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!

Tecnologia:
python

Deixe seu Comentário!

Comentário
Nome
Email