Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

Duck Typing in Python


Duck typing is a concept in Python and other dynamically typed languages where the type or class of an object is less important than the methods and attributes it has. The name comes from the saying:

"If it looks like a duck, swims like a duck, and quacks like a duck, then it is probably a duck."

In Python, duck typing allows us to focus on what an object can do, rather than what the object is. This promotes flexibility and reduces the need for strict type checking.

Basic Example of Duck Typing

In this example, different objects are used with the same method, demonstrating how duck typing works:

    class Duck:
        def quack(self):
            return "Quack!"

    class Dog:
        def quack(self):
            return "Woof, but pretending to quack!"

    def make_it_quack(animal):
        return animal.quack()

    # Example usage
    duck = Duck()
    dog = Dog()

    print(make_it_quack(duck))  # Output: Quack!
    print(make_it_quack(dog))   # Output: Woof, but pretending to quack!
        

Duck Typing in Action

Duck typing allows the use of objects with the same method or attribute, even if they are unrelated by inheritance.

    class Bird:
        def fly(self):
            return "Bird is flying"

    class Airplane:
        def fly(self):
            return "Airplane is flying"

    def let_it_fly(obj):
        return obj.fly()

    # Example usage
    bird = Bird()
    airplane = Airplane()

    print(let_it_fly(bird))       # Output: Bird is flying
    print(let_it_fly(airplane))   # Output: Airplane is flying
        

Advantages of Duck Typing

Potential Pitfalls of Duck Typing

Conclusion

Duck typing is a powerful feature of Python that emphasizes an object's behavior over its type. By allowing objects to be used interchangeably based on the methods they implement, duck typing promotes clean, flexible, and intuitive code. However, it requires careful design to avoid runtime errors and ensure that objects behave as expected.



Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java