Inheritance কী ?
Inheritance এই টার্মটি আমরা সবাই কম বেশি জানি। আজ দেখব পাইথনে Inheritance কিভাবে করতে হয়।
Inheritance আমরা তখনই ব্যবহার করি যখন আমাদের মনে হয় যে, অন্য কোনো পাইথন ক্লাসের মেথড অর প্রপার্টি আমাদের তৈরি করা ক্লাসে দরকার হয়।
যে ক্লাসটিকে আমরা ইনহেরিট করব সেই ক্লাসটিকে বলা হয় প্যারেন্ট ক্লাস অথবা বেস ক্লাস।
এবং যে ক্লাসটি ইনহেরিট করবে তাকে বলা হয় চাইন্ড ক্লাস অথবা Derived ক্লাস।
Parent Class or Base Class:
এখন Branch নামে একটি ক্লাস তৈরি করব।
এই ক্লাসটির মধ্যে ৪টি properties আছে name, address, number_emp, manager এবং
৪টি মেথড রয়েছে get_address(), get_manager(), get_number_of_emp(), get_branch_name()
# Parent class or base class.
class Branch:
def __init__(self, branch_name, address, number_emp, manager):
self.branch_name = branch_name
self.address = address
self.number_emp = number_emp
self.manager = manager
def get_address(self):
return self.address
def get_manager(self):
return self.manager
def get_number_of_emp(self):
return self.number_emp
def get_branch_name(self):
return self.branch_name
আমাদের Branch ক্লাসটি হচ্ছে আমাদের প্যারেন্ট ক্লাস বা বেস ক্লাস। এখন আরেকটি ক্লাস তৈরি করব যার নাম হবে Bank
এই Bank ক্লাসটি হচ্ছে আমাদের চাইল্ড ক্লাস। Bank ক্লাসটি Branch ক্লাসটিকে ইনহেরিট করবে। যাতে করে Branch ক্লাসটির সকল পাবলিক মেঠড আমাদের চাইল্ড ক্লাসে চলে আসে।
পাইথনে ইনহেরিট করার নিয়ম হচ্ছেঃ
# Syntax of python inheritance.
class Child_Class (Parent_class):
# class properties and methods....
class Bank(Branch):
# class properties and methods....
তাহলে আমাদের সম্পূর্ণ Bank ক্লাসটি হবেঃ
# Child class or derived class.
class Bank(Branch):
def __init__(self, name, address, number_emp, manager):
super().__init__(name, address, number_emp, manager)
def get_branch_info(self):
return f'''Branch Name: {self.get_branch_name()}
Address: {self.get_address()}
Manager: {self.get_manager()}
Number of Employee: {self.get_number_of_emp()}'''
# create child class object
dhaka_branch = Bank("Mirpur Branch", "Mirpur", "21", "Mr. Latif")
khulna_branch = Bank("Mongla Branch", "Mongla", "45", "Mr. Azad")
print(dhaka_branch.get_manager())
print(khulna_branch.get_branch_name())
print(dhaka_branch.get_branch_info())
এখানে মনে রাখতে হবে অন্যান্য অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মতই, যখন আমরা কোন ক্লাসকে ইনহেরিট করব তখন ওই প্যারেন্ট ক্লাসের constructor কে অবশ্যই কল করতে হবে।
এখানে super() ফাংশনটির মাধ্যমে আমারা প্যারেন্ট ক্লাসের constructor কে কল করেছি।