Python Polymorphism
"পলিমরফিজম" এর অর্থ "অনেক রূপ" এবং প্রোগ্রামিং-এ এটি একাধিক বস্তু বা শ্রেণিতে প্রয়োগ করা একই নামের পদ্ধতি/নির্ভরতা/অপারেটরকে বোঝায়।
Function Polymorphism
পাইথন ফাংশনের একটি উদাহরণ যা বিভিন্ন বস্তুতে ব্যবহার করা যেতে পারে তা হল len() ফাংশন।
স্ট্রিং
len() স্ট্রিং এর জন্য অক্ষর সংখ্যা প্রদান করে:
x = "Hello World!"
print(len(x))
টুপল
tuples-এর জন্য len() টিপলে আইটেমের সংখ্যা প্রদান করে:
mytuple = ("apple", "banana", "cherry")
print(len(mytuple))
অভিধান
অভিধানের জন্য len() অভিধানে কী/মান জোড়ার সংখ্যা প্রদান করে:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(len(thisdict))
দ্রষ্টব্য:
এটি পাইথনে অন্তর্নির্মিত বহুপদগুলির একটি উদাহরণ। একই len() ফাংশন বিভিন্ন ডাটা টাইপের সাথে ভিন্নভাবে আচরণ করে।
Class Polymorphism
গুণন প্রায়শই ক্লাস পদ্ধতিতে ব্যবহৃত হয় যেখানে আমাদের একই পদ্ধতির নামের একাধিক ক্লাস থাকতে পারে।
উদাহরণস্বরূপ, বলুন আমাদের তিনটি শ্রেণী রয়েছে: গাড়ি, নৌকা এবং প্লেন, এবং তাদের সকলের একটি মুভ() পদ্ধতি রয়েছে:
উদাহরণ
একই পদ্ধতি সহ বিভিন্ন ক্লাস:
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()
শেষে লুপ দেখুন. আমরা বহুবিধতার কারণে তিনটি শ্রেণীর জন্য একই পদ্ধতি প্রয়োগ করতে পারি।
Inheritance Class Polymorphism
একই নামের সাথে শিশু ক্লাস আছে যে ক্লাস সম্পর্কে কি? আমরা সেখানে গুণ ব্যবহার করতে পারি?
হ্যাঁ। যদি আমরা উপরের উদাহরণ ব্যবহার করে যানবাহন নামে একটি অভিভাবক শ্রেণি তৈরি করি এবং গাড়ি, বোট, প্লেনকে যানবাহনের শিশু শ্রেণি হিসাবে তৈরি করি, তবে শিশু শ্রেণিগুলি যানবাহন পদ্ধতির উত্তরাধিকারী হয়, তবে সেগুলিকে ওভাররাইড করতে পারে:
উদাহরণ
একটি শ্রেণির যান তৈরি করুন এবং গাড়ি, নৌকা, প্লেন শিশুর যানবাহনের ক্লাস তৈরি করুন:
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()
শিশু শ্রেণীগুলি পিতামাতার শ্রেণী থেকে বৈশিষ্ট্য এবং পদ্ধতিগুলি উত্তরাধিকার সূত্রে পায়৷
উপরের উদাহরণে আপনি দেখতে পাচ্ছেন যে কার ক্লাসটি খালি, তবে এটি গাড়ি থেকে ব্র্যান্ড, মডেল এবং মুভ() উত্তরাধিকার সূত্রে প্রাপ্ত।
বোট এবং প্লেন ক্লাসগুলিও গাড়ি থেকে ব্র্যান্ড, মডেল এবং মুভ() উত্তরাধিকার সূত্রে পায়, কিন্তু তারা উভয়ই move() পদ্ধতিকে ওভাররাইড করে।
ডেরিভেশনের কারণে আমরা সব শ্রেণীর জন্য একই পদ্ধতি প্রয়োগ করতে পারি।