কম্পিউটার টিউটোরিয়াল

পাইথনে ক্লাস ইনহেরিটেন্স (Class Inheritance)

শূন্য থেকে শুরু না করে আপনি একটি প্রি-এক্সিস্টিং ক্লাস থেকে ডেরাইভ করে নতুন ক্লাস তৈরি করতে পারেন, নতুন ক্লাসের নামের পর বন্ধনীর মধ্যে পেরেন্ট ক্লাস লিস্ট করে।

চাইল্ড ক্লাস তার পেরেন্ট ক্লাসের অ্যাট্রিবিউটস ইনহেরিট করে, এবং আপনি সেগুলো ব্যবহার করতে পারেন যেন সেগুলো চাইল্ড ক্লাসে সংজ্ঞায়িত হয়েছে। চাইল্ড ক্লাস পেরেন্টের ডেটা মেম্বার এবং মেথডও ওভাররাইড করতে পারে।

সিনট্যাক্স

ডেরাইভড ক্লাসগুলো পেরেন্ট ক্লাসের মতোই ডিক্লেয়ার করা হয়; তবে ক্লাসের নামের পর ইনহেরিট করার বেস ক্লাসের লিস্ট দেওয়া হয়:

class SubClassName (ParentClass1[, ParentClass2, ...]):
    'Optional class documentation string'
    class_suite

উদাহরণ

#!/usr/bin/python
class Parent:
    parentAttr = 100
    def __init__(self):
        print "Calling parent constructor"
    def parentMethod(self):
        print 'Calling parent method'
    def setAttr(self, attr):
        Parent.parentAttr = attr
    def getAttr(self):
        print "Parent attribute :", Parent.parentAttr

class Child(Parent):
    def __init__(self):
        print "Calling child constructor"
    def childMethod(self):
        print 'Calling child method'

c = Child()
c.childMethod()
c.parentMethod()
c.setAttr(200)
c.getAttr()

আউটপুট

Calling child constructor
Calling child method
Calling parent method
Parent attribute : 200

একইভাবে, আপনি একাধিক পেরেন্ট ক্লাস থেকে ডেরাইভ করতে পারেন:

class A:
    ...
class B:
    ...
class C(A, B):
    ...

দুই ক্লাস ও ইনস্ট্যান্সের সম্পর্ক চেক করতে issubclass() বা isinstance() ফাংশন ব্যবহার করতে পারেন:

  • issubclass(sub, sup) - সাবক্লাস sub যদি সুপারক্লাস sup-এর সাবক্লাস হয় তবে true রিটার্ন করে।
  • isinstance(obj, Class) - obj যদি Class-এর ইনস্ট্যান্স হয় বা এর সাবক্লাসের ইনস্ট্যান্স হয় তবে true রিটার্ন করে।
  1. পাইথন ইনহেরিটেন্স: ধাপে ধাপে গাইড

  2. C++ vs Java: ইনহেরিটেন্স পার্থক্য

  3. C++-এ মাল্টিপল ইনহেরিট্যান্স

  4. পাইথনে ইনহেরিটেন্স (Inheritance)