Python Polymorphism
"polymorphism" என்பது "பல வடிவங்கள்" என்று பொருள்படும், மேலும் நிரலாக்கத்தில் இது பல பொருள்கள் அல்லது வகுப்புகளில் செயல்படுத்தப்படும் ஒரே பெயரில் உள்ள முறைகள்/சார்புகள்/ஆபரேட்டர்களைக் குறிக்கிறது.
Function Polymorphism
வெவ்வேறு பொருள்களில் பயன்படுத்தக்கூடிய ஒரு Python சார்புக்கு உதாரணம் len() சார்பு ஆகும்.
String (சரம்)
சரங்களுக்கு len() எழுத்துகளின் எண்ணிக்கையை வழங்குகிறது:
x = "Hello World!"
print(len(x))
Tuple (டூப்பிள்)
டூப்பிள்களுக்கு len() டூப்பிளில் உள்ள உருப்படிகளின் எண்ணிக்கையை வழங்குகிறது:
mytuple = ("apple", "banana", "cherry")
print(len(mytuple))
Dictionary (அகராதி)
அகராதிகளுக்கு len() அகராதியில் உள்ள விசை/மதிப்பு ஜோடிகளின் எண்ணிக்கையை வழங்குகிறது:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(len(thisdict))
குறிப்பு:
இது Python இல் உள்ளமைக்கப்பட்ட பல்லுருவாக்கத்தின் எடுத்துக்காட்டு. ஒரே len() சார்பு வெவ்வேறு தரவு வகைகளுடன் வேறுபட்ட முறையில் செயல்படுகிறது.
Class Polymorphism
பல்லுருவாக்கம் பெரும்பாலும் வகுப்பு முறைகளில் பயன்படுத்தப்படுகிறது, அங்கு நம்மிடம் ஒரே முறை பெயருடன் பல வகுப்புகள் இருக்கலாம்.
உதாரணமாக, எங்களிடம் மூன்று வகுப்புகள் உள்ளன என்று சொல்லுங்கள்: Car, Boat, மற்றும் Plane, மேலும் அவை அனைத்தும் move() என்ற முறையைக் கொண்டுள்ளன:
எடுத்துக்காட்டு
ஒரே முறையுடன் வெவ்வேறு வகுப்புகள்:
class Car:
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()
இறுதியில் உள்ள for loop ஐப் பாருங்கள். பல்லுருவாக்கம் காரணமாக மூன்று வகுப்புகளுக்கும் ஒரே முறையை நாம் செயல்படுத்தலாம்.
Inheritance Class Polymorphism
ஒரே பெயருடன் குழந்தை வகுப்புகளைக் கொண்ட வகுப்புகள் பற்றி என்ன? நாம் அங்கு பல்லுருவாக்கத்தைப் பயன்படுத்தலாமா?
ஆம். மேலே உள்ள எடுத்துக்காட்டைப் பயன்படுத்தி Vehicle என்று ஒரு பெற்றோர் வகுப்பை உருவாக்கி, Car, Boat, Plane ஆகியவற்றை Vehicle இன் குழந்தை வகுப்புகளாக உருவாக்கினால், குழந்தை வகுப்புகள் Vehicle முறைகளைப் பெறுகின்றன, ஆனால் அவற்றை மேலெழுதலாம்:
எடுத்துக்காட்டு
Vehicle என்ற வகுப்பை உருவாக்கி, Car, Boat, Plane ஆகியவற்றை Vehicle இன் குழந்தை வகுப்புகளாக ஆக்கவும்:
class Vehicle:
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()
குழந்தை வகுப்புகள் பெற்றோர் வகுப்பிலிருந்து பண்புகள் மற்றும் முறைகளைப் பெறுகின்றன.
மேலே உள்ள எடுத்துக்காட்டில் Car வகுப்பு காலியாக இருப்பதைக் காணலாம், ஆனால் அது brand, model, மற்றும் move() ஆகியவற்றை Vehicle இலிருந்து பெறுகிறது.
Boat மற்றும் Plane வகுப்புகளும் brand, model, மற்றும் move() ஆகியவற்றை Vehicle இலிருந்து பெறுகின்றன, ஆனால் அவை இரண்டும் move() முறையை மேலெழுதுகின்றன.
பல்லுருவாக்கம் காரணமாக அனைத்து வகுப்புகளுக்கும் ஒரே முறையை நாம் செயல்படுத்தலாம்.