के लिए पायथन फ़ंक्शन प्राप्त करना एक पायथन फ़ंक्शन में कोड ऑब्जेक्ट __code__
है।कोड ऑब्जेक्ट
ए sys.settrace
ट्रेस frame
में f_code
कोड ऑब्जेक्ट है।
उन ट्रैर्स को कॉल करने के लिए जो फ़ंक्शन हैं, मैं फ़ंक्शन ऑब्जेक्ट (और इसके __annotation__
सदस्य) कैसे प्राप्त कर सकता हूं?
अब तक, परीक्षण और त्रुटि से, मेरे पास है:
if hasattr(frame.f_globals.get(frame.f_code.co_name),"__annotations__"):
इस कार्य के लिए काम करने के लिए, लेकिन वर्ग सदस्यीय कार्यों के लिए नहीं लगता है, इससे भी बदतर, यह वर्ग-सदस्य कार्यों को उसी नाम के शीर्ष-स्तरीय कार्यों के साथ भ्रमित करता है।
(। मैं कर रहा हूँ अजगर 3.2.3 (Xubuntu) पर मैं देख रहा हूँ अजगर 3.3 inspect
मॉड्यूल एक signature
समारोह है, यह एक कोड वस्तु के लिए एनोटेशन वापस आ जाएगी या यह बहुत एक समारोह वस्तु की जरूरत है?)
'inspect.getframeinfo' टपल के' function' क्षेत्र द्वारा
__code__
बदलना चाहिए - यह अजगर 3 के लिए है। और जीसी दृष्टिकोण एकाधिक संदर्भकर्ताओं को जोखिम देता है? – Willमैं gc.get_referrers (...) [0] – Will
का उपयोग कर समाप्त हो गया है आप यह देखने के लिए एक चेक जोड़ सकते हैं कि func_code/__ code__ कोड वस्तु है जिसे आप सूची समझना चाहते हैं। यह अभी भी विफल रहता है यदि आप एकाधिक फ़ंक्शंस उत्पन्न करते हैं एक ही कोड ऑब्जेक्ट से भिन्न बंद, उदाहरण के लिए एक सजावट के साथ। मुझे लगता है कि प्रत्येक के लिए func_closure के cell_contents के खिलाफ f_locals की तुलना कर सकते हैं ... –