मैं नीचे दिए गए कोड (पायथन 2.7) का उपयोग करके किसी ऑब्जेक्ट के अगले फ़ंक्शन को ओवरराइड करने का प्रयास कर रहा हूं।उदाहरण को ओवरराइड करना अगले फ़ंक्शन
जब ऑब्जेक्ट की next
विधि सीधे कॉल की जाती है, तो नया फ़ंक्शन लागू होता है। हालांकि जब मैं अपने ऑब्जेक्ट पर बिल्टिन next()
फ़ंक्शन को कॉल करता हूं (जो, according to the docs, उदाहरण की अगली विधि को कॉल करना चाहिए), मूल कार्यवाही की जाती है।
क्या कोई इस व्यवहार को समझा सकता है?
class Test(object):
def __iter__(self):
return self
def next(self):
return 1
test = Test()
def new_next(self):
return 2
test.next = type(test.__class__.next)(new_next, test, test.__class__)
print test.next() # 2
print next(test) # 1
दिलचस्प। [पीईपी 3114] से संबंधित हो सकता है (https://www.python.org/dev/peps/pep-3114)? –
@ एंड्रेलास्लो ऐसा लगता है कि पीईपी पाइथन 3 – warvariuc
@warvariuc ओप्स के लिए है, तो आप सही हैं। –