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