यहाँ मेरी कक्षाएं हैं:

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 में निर्धारित राशि का मूल्य कैसे प्राप्त कर सकता हूं।

धन्यवाद।

0
Real Noob 28 नवम्बर 2020, 21:44

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()
2
tdelaney 28 नवम्बर 2020, 22:00