मैंने कक्षा परिभाषाओं में __repr__
विधि सेट करने के लिए केवल उदाहरण देखे हैं। क्या __repr__
को उनके परिभाषाओं में या उन्हें परिभाषित करने के बाद कार्यों के लिए बदलना संभव है?पायथन में फ़ंक्शन के रिप्रर को बदलना संभव है?
मैं सफलता के बिना प्रयास किया है ...
>>> def f():
pass
>>> f
<function f at 0x1026730c8>
>>> f.__repr__ = lambda: '<New repr>'
>>> f
<function __main__.f>
सज्जाकार नाम और सजाया कार्यों का docstring अद्यतन करने के लिए के लिए functools.wraps' का उपयोग करें '। – schlamar
समस्या यह है कि 'प्रिंट mul42 .__ name__' एक एट्रिब्यूट एरर उठाएगा जो किसी फ़ंक्शन के लिए अपेक्षित नहीं है। तो यह होगा: 'ठीक करने के लिए वापसी wraps (func) (reprwrapper (reprfun, func))' इसे ठीक करने के लिए। – schlamar
@ ms4py इस मामले में मुझे लगता है कि 'update_wrapper' थोड़ा अधिक उचित/प्रत्यक्ष है। मैंने रैपर वर्ग को संशोधित किया है ताकि यह अपने कन्स्ट्रक्टर में ऐसा कर सके। इस तरह अद्यतन तब भी होता है जब आप 'withrepr' सजावट का उपयोग करने के बजाय सीधे कक्षा का उपयोग करते हैं। – kwatford