Python Polymorphism

পাইথন গুন সম্পর্কে জানুন

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() পদ্ধতিকে ওভাররাইড করে।

ডেরিভেশনের কারণে আমরা সব শ্রেণীর জন্য একই পদ্ধতি প্রয়োগ করতে পারি।

অনুশীলন করুন

সত্য বা মিথ্যা। একটি বস্তুর অন্য বস্তুর পদ্ধতির মতো একই নামের একটি পদ্ধতি থাকতে পারে না।

সত্য
✗ ভুল! lie ডেরিভেশনের কারণে, বিভিন্ন শ্রেণীর বিভিন্ন বস্তুর একই নামের পদ্ধতি থাকতে পারে। উদাহরণস্বরূপ, কার, বোট এবং প্লেন সকলের একটি মুভ() পদ্ধতি থাকতে পারে
মিথ্যা
✓ ঠিক আছে! true ডেরিভেশনের কারণে, বিভিন্ন শ্রেণীর একই পদ্ধতির নাম থাকতে পারে। এটি পাইথন ওওপির একটি গুরুত্বপূর্ণ বৈশিষ্ট্য