जब हम पायथन में एक क्लास को इंस्टेंशिएट करते हैं, तो उसके सभी चर और फ़ंक्शन नई इंस्टेंशिएटेड क्लास को विरासत में मिलते हैं। लेकिन ऐसे अवसर हो सकते हैं जब हम पैरेंट क्लास के कुछ चर को चाइल्ड क्लास द्वारा विरासत में नहीं देना चाहते। इस लेख में, हम ऐसा करने के दो तरीके तलाशेंगे।
इंस्टेंशिएशन उदाहरण
नीचे दिए गए उदाहरण में हम दिखाते हैं कि कैसे एक दी गई क्लास से चर इंस्टेंशिएट होते हैं और कैसे चर सभी इंस्टेंशिएटेड क्लास में साझा होते हैं।
class MyClass: listA = [] # दोनों क्लास को इंस्टेंशिएट करें x = MyClass() y = MyClass() # दोनों क्लास को मैनिपुलेट करें x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # परिणाम प्रिंट करें print("इंस्टेंस X: ", x.listA) print("इंस्टेंस Y: ", y.listA)आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित परिणाम मिलता है -
इंस्टेंस X: [10, 20, 30, 40] इंस्टेंस Y: [10, 20, 30, 40]
__init__ के साथ निजी क्लास चर
हम __init__ मेथड का उपयोग करके क्लास के अंदर चर को निजी बना सकते हैं। जब पैरेंट क्लास इंस्टेंशिएट होती है तो ये चर इंस्टेंशिएटेड क्लास में साझा नहीं होंगे।
उदाहरण
class MyClass: def __init__(self): self.listA = [] # दोनों क्लास को इंस्टेंशिएट करें x = MyClass() y = MyClass() # दोनों क्लास को मैनिपुलेट करें x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # परिणाम प्रिंट करें print("इंस्टेंस X: ", x.listA) print("इंस्टेंस Y: ", y.listA)आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित परिणाम मिलता है -
इंस्टेंस X: [10, 30] इंस्टेंस Y: [20, 40]
क्लास के बाहर चर घोषित करके
इस दृष्टिकोण में, हम क्लास के बाहर चर को फिर से घोषित करेंगे। चूंकि चर फिर से आरंभ हो जाते हैं, वे इंस्टेंशिएटेड क्लास में साझा नहीं होते।
उदाहरण
class MyClass: listA = [] # दोनों क्लास को इंस्टेंशिएट करें x = MyClass() y = MyClass() x.listA = [] y.listA = [] # दोनों क्लास को मैनिपुलेट करें x.listA.append(10) y.listA.append(20) x.listA.append(30) y.listA.append(40) # परिणाम प्रिंट करें print("इंस्टेंस X: ", x.listA) print("इंस्टेंस Y: ", y.listA)आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित परिणाम मिलता है -
इंस्टेंस X: [10, 30] इंस्टेंस Y: [20, 40]