Polymorphism
Explore the concept of polymorphism in Python to understand how different subclasses can share the same interface while implementing behaviors uniquely. Learn how polymorphism allows seamless substitution of subclasses without changing the code that uses them, enhancing code flexibility and design. Discover how duck typing complements polymorphism in Python by allowing objects with the required methods to be used interchangeably, reducing dependency on complex inheritance.
We'll cover the following...
Polymorphism is a showy name describing a simple concept: different behaviors happen to depend on which subclass is being used, without having to explicitly know what the subclass actually is. It is also sometimes called the Liskov Substitution Principle, honoring Barbara Liskov’s contributions to object-oriented programming. We should be able to substitute any subclass for its superclass.
Example
As an example, imagine a program that plays audio files. A media player might need to load an AudioFile object and then play it. We can put a play() method on the object, which is responsible for decompressing or extracting the audio and routing it to the sound card and speakers. The act of playing an AudioFile could feasibly be as simple as:
audio_file.play()
However, the process of decompressing and extracting an audio file is very different for different types of files. While .wav files are stored uncompressed, .mp3, .wma,
and .ogg files all utilize totally different compression algorithms.
Using polymorphism
We can use inheritance with polymorphism ...