PythonPolymorphism
The word "polymorphism" means "many forms", and in programming it refers tomethods/functions/operators with the same name that can be executed on many objects or classes.
Function Polymorphism
An example of a Python function that can be used on different objects is thelen()
function.
String
For stringslen()
returns the number of characters:
Tuple
For tupleslen()
returns the number of items in the tuple:
Dictionary
For dictionarieslen()
returns the number of key/value pairs in the dictionary:
Example
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(len(thisdict))
Class Polymorphism
Polymorphism is often used in Class methods, where we can have multiple classes with the same method name.
For example, say we have three classes:Car
,Boat
, andPlane
, and they all have a method calledmove()
:
Example
Different classes with the same method:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Drive!")
class Boat:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Sail!")
class Plane:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Fly!")
car1 = Car("Ford", "Mustang") #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object
for x in (car1, boat1, plane1):
x.move()
Look at the for loop at the end.Because of polymorphism we can execute the same method for all three classes.
Inheritance Class Polymorphism
What about classes with child classes with the same name? Can we use polymorphism there?
Yes. If we use the example above and make a parent class calledVehicle
, and makeCar
,Boat
,Plane
child classes ofVehicle
, the child classes inherits theVehicle
methods, but can override them:
Example
Create a class calledVehicle
and makeCar
,Boat
,Plane
child classes ofVehicle
:
def __init__(self, brand, model):
self.brand = brand
self.model = model
def move(self):
print("Move!")
class Car(Vehicle):
pass
class Boat(Vehicle):
def move(self):
print("Sail!")
class Plane(Vehicle):
def move(self):
print("Fly!")
car1 = Car("Ford", "Mustang") #Create a Car object
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat object
plane1 = Plane("Boeing", "747") #Create a Plane object
for x in (car1, boat1, plane1):
print(x.brand)
print(x.model)
x.move()
Child classes inherits the properties and methods from the parent class.
In the example above you can see that theCar
class is empty, but it inheritsbrand
,model
, andmove()
fromVehicle
.
TheBoat
andPlane
classes also inheritbrand
,model
, andmove()
fromVehicle
, but they both override themove()
method.
Because of polymorphism we can execute the same method for all classes.