मैं निम्नलिखित कोडप्रिंट करने की अपेक्षा करता हूं लेकिन यह 012012 प्रिंट करता है। क्यों? मैं उम्मीद करता हूं कि कॉल उसी वैरिएबल तक पहुंचने में शामिल हों क्योंकि उन्हें एक ही कक्षा से विरासत में मिला है लेकिन वे स्पष्ट रूप से भिन्न चर हैं।पायथन कक्षा के तरीके और विरासत
class a(object):
var = 0
@classmethod
def incr(cls):
print cls.var
cls.var+=1
class b(a):
def func(self):
super(b,self).incr()
class c(a):
def func(self):
super(c,self).incr()
t = a()
t1 = b()
t2 = c()
t1.func()
t1.func()
t1.func()
t2.func()
t2.func()
t2.func()
यह अप्रत्याशित व्यवहार को प्रभावित नहीं करता आप देख रहे हैं, लेकिन मैं यह ध्यान रखना चाहता हूं कि आपको अपने उप-वर्गों में यहां 'सुपर' का उपयोग करने की आवश्यकता नहीं है। आप इसके बजाय 'self.incr()' को कॉल कर सकते हैं। जब आप फ़ंक्शन के किसी भिन्न संस्करण को छोड़ना चाहते हैं तो आपको केवल 'सुपर' का उपयोग करने की आवश्यकता होती है (आमतौर पर क्योंकि आपने वर्तमान कक्षा में ओवरराइड किया है)। – Blckknght
आपको पायथन 3.6 पर स्विच करना चाहिए। https://pythonclock.org/ – wwii