मैं पायथन (3.4) में कक्षाओं के बारे में पढ़ रहा हूं और जो मुझे लगता है उससे यह लगता है कि हर नई वस्तु के अपने बाध्य तरीकों के उदाहरण हैं।क्या पाइथन वास्तव में हर नए उदाहरण के लिए सभी बाध्य विधि बनाता है?
class A:
def __init__(self, name):
self.name = name
def foo(self):
print(self.name)
a = A('One')
b = A('Two')
print(a.foo == b.foo)
इसका आउटपुट False
है।
यह मुझे स्मृति की बर्बादी के रूप में लगता है। मैंने सोचा कि आंतरिक रूप से a.foo
और b.foo
मेमोरी में किसी भी तरह आंतरिक रूप से इंगित करेगा: A.foo
जहां कक्षा उदाहरण के रूप में self
पारित किया जाएगा।
मुझे लगता है कि यह शायद भाषा में आसानी से लागू नहीं किया जा सकता है।
क्या प्रत्येक नए उदाहरण में इसके बाध्य तरीकों के नए उदाहरण भी शामिल हैं?
यदि हां, तो क्या यह प्रदर्शन को चोट नहीं पहुंचाता है या अन्य भाषाओं की तुलना में नई वस्तुओं को अधिक सावधानीपूर्वक बनाने के लिए केस बनाता है जहां Java
जैसी वस्तुओं के बीच विधियों को "साझा" किया जाता है?
क्या आप जो कुछ पढ़ते हैं उससे लिंक कर सकते हैं जो आपको ऐसा लगता है? –
@SotiriosDelimanolis 'X()। F == X.f' का परिणाम 'गलत' होगा (जहां f एक इंस्ट्रेस विधि है)। यह ऐसा सोचने के लिए पर्याप्त है। –
हालांकि, प्रत्येक बाध्य विधि, समान अंतर्निहित फ़ंक्शन का संदर्भ देती है। रैपर के लिए मेमोरी ओवरहेड न्यूनतम है। – chepner