শূন্য থেকে শুরু না করে আপনি একটি প্রি-এক্সিস্টিং ক্লাস থেকে ডেরাইভ করে নতুন ক্লাস তৈরি করতে পারেন, নতুন ক্লাসের নামের পর বন্ধনীর মধ্যে পেরেন্ট ক্লাস লিস্ট করে।
চাইল্ড ক্লাস তার পেরেন্ট ক্লাসের অ্যাট্রিবিউটস ইনহেরিট করে, এবং আপনি সেগুলো ব্যবহার করতে পারেন যেন সেগুলো চাইল্ড ক্লাসে সংজ্ঞায়িত হয়েছে। চাইল্ড ক্লাস পেরেন্টের ডেটা মেম্বার এবং মেথডও ওভাররাইড করতে পারে।
সিনট্যাক্স
ডেরাইভড ক্লাসগুলো পেরেন্ট ক্লাসের মতোই ডিক্লেয়ার করা হয়; তবে ক্লাসের নামের পর ইনহেরিট করার বেস ক্লাসের লিস্ট দেওয়া হয়:
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 রিটার্ন করে।