यहाँ मेरी कक्षाएं हैं:
class A(Something):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.amounts = []
self.counts = []
def common_method(self):
amounts = self.amounts
counts = self.counts
print(amounts)
class B(A):
def construct(self):
counts = self.counts
amounts = [1, 2, 3, 4]
self.common_method()
जब कक्षा B
को इंस्टेंट किया जाता है, तो इसका परिणाम [1, 2, 3, 4]
के बजाय []
प्रिंट होता है।
अगर मैं amounts = self.amounts
को A
से हटा देता हूं तो मुझे त्रुटि मिलती है amounts
परिभाषित नहीं है। मैं अपने मूल वर्ग A
से एक विधि common_method
को कॉल करते समय जारी रखने के लिए B
में निर्धारित राशि का मूल्य कैसे प्राप्त कर सकता हूं।
धन्यवाद।
1 उत्तर
विधि में B.construct
, count
और amounts
स्थानीय फ़ंक्शन चर हैं और फ़ंक्शन के लिए एक कॉल के बाहर किसी भी चीज़ के लिए दृश्यमान नहीं हैं। common_method
उन्हें दिखाई नहीं देता। आपको या तो उन मानों को लेने के लिए common_method
को पैरामीटर करना होगा या, यह देखते हुए कि common_method
ऑब्जेक्ट के आवृत्ति चर का उपयोग करता है, construct
उन्हें भरें।
class A:
def __init__(self):
self.amounts = []
self.counts = []
def common_method(self):
amounts = self.amounts
counts = self.counts
print(amounts)
class B(A):
def construct(self):
self.amounts = [1, 2, 3, 4]
self.common_method()
B().construct()
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।