Monster
. এই ক্লাস থেকে আমরা বিভিন্ন রকম আলাদা আলাদা অবজেক্ট তথা দৈত্য তৈরি করা দেখেছি। একটি ক্লাসে আমরা সেই সব প্রোপার্টি এবং মেথড রাখি যেগুলো এই ক্লাস থেকে বানানো অবজেক্টের কাজে লাগে। কিন্তু যদি এমন হয় যে, Monster
ক্লাস থেকে বানানো অবজেক্ট গুলোর আরও নিজস্ব কিছু অ্যাক্টিভিটি (মেথড) দরকার যেগুলো আমাদের Monster
ক্লাস বা টেম্পলেটে নাই। তাহলে কি হবে? আমরা কি তবে ওই ক্লাস থেকে অবজেক্ট বানানো বাদ দিয়ে দেবো? আরেকটি ক্লাস বানিয়ে সেই নতুন ক্লাস থেকে অবজেক্ট তথা একটু ভিন্ন বৈশিষ্ট্যের দৈত্য বানানো শুরু করবো?Monster
ক্লাসকেই ইনহেরিট করবো।Monster
নামে। এবার সত্যিকারের দৈত্য অবজেক্ট তৈরির সময় মনে হল যে, fogthing
আর mournsnake
দৈত্যের শব্দ তো আলাদা রকম। তখন আমরা বাড়তি এই ফাংশনটা সহ Fogthing
আর Mournsnake
নামের দুটো ক্লাস বানিয়ে নিয়েছি কিন্তু সেগুলো মুল Monster
ক্লাসকে ইনহেরিট করছে। অর্থাৎ নতুন এই দুটি ক্লাসের নিজস্ব কিছু ফিচার আছে সাথে Monster
ক্লাসের সব ফিচারও পাচ্ছে।কোন ক্লাসকে ইনহেরিট করার জন্য ওই ক্লাসের নামটি নতুন ক্লাসের নামের পর ব্র্যাকেটের মধ্যে লিখতে হয়। এখানেMonster
হচ্ছে সুপারক্লাস আরFogthing
,Mournsnake
হচ্ছে সাবক্লাস
Fogthing
ক্লাস মুল Monster
ক্লাসের attack
মেথডকে অভাররাইড করেছে।C
ক্লাসটি A
এবং B
দুটো ক্লাসকেই ইনহেরিট করেছে। আবার ওই দুটো ক্লাসের প্রত্যেকটিতেই where
নামের মেথড আছে। পরিশেষে, যখন C
ক্লাসের ইন্সট্যান্স তৈরি করে where
মেথডকে কল করা হচ্ছে তখন আসলে কোন ক্লাসের where
মেথডটি কল হবে?
প্রথমেই সেই মেথডকে C
ক্লাসের মধ্যে খোঁজা হবে, না পেলে A
ক্লাসের মধ্যে আর সেখানেও না পেলে B
ক্লাসের মধ্যে খোঁজা হবে। এখন বলা যায় আউটপুট কি আসবে,print(C.mro())
স্টেটমেন্টটি ব্যবহার করতে পারি যার আউটপুট আসবে নিচের মত,C
, A
, B
super
মেথড
ইনহেরিট্যান্স এর ক্ষেত্রে super
একটি গুরুত্বপূর্ণ মেথড। এর মাধ্যমে একটি অবজেক্টের সুপার ক্লাসের মধ্যেকার মেথডকে কল করা যায়। যেমন,