जबकि मैं आम तौर पर सहमत हूं कि inspect
एक अच्छा जवाब है, यह आपकी कक्षा (और इस प्रकार कक्षा विधि) को दुभाषिया में परिभाषित किया गया था जब यह फ्लैट हो जाता है।
आप dill
से dill.source.getsource
उपयोग करते हैं, आप कार्यों और lambdas के स्रोत प्राप्त कर सकते हैं, भले ही वे सहभागी परिभाषित कर रहे हैं। यह सीमाओं में परिभाषित बाध्य या अनबाउंड क्लास विधियों और कार्यों से भी कोड प्राप्त कर सकता है ... हालांकि, हो सकता है कि आप उस कोड को संलग्न ऑब्जेक्ट के कोड के बिना संकलित करने में सक्षम न हों।
>>> from dill.source import getsource
>>>
>>> def add(x,y):
... return x+y
...
>>> squared = lambda x:x**2
>>>
>>> print getsource(add)
def add(x,y):
return x+y
>>> print getsource(squared)
squared = lambda x:x**2
>>>
>>> class Foo(object):
... def bar(self, x):
... return x*x+x
...
>>> f = Foo()
>>>
>>> print getsource(f.bar)
def bar(self, x):
return x*x+x
>>>
builtin
कार्य या विधियों के लिए, dill.source
काम नहीं करेगा ... लेकिन ...
तुम अब भी रूप में सुझाव दिया है कि यह (में स्रोत कोड के साथ फ़ाइल खोलने के लिए अपने पसंदीदा संपादक का उपयोग कर का सहारा लेना नहीं हो सकता है अन्य उत्तरों)। cinspect
नामक एक नया पैकेज है जो builtins
के लिए स्रोत देखने में सक्षम होने के लिए purports।
स्रोत
2015-01-22 15:53:25
कृपया अपने चर 'अगली' को कॉल न करें क्योंकि यह बिल्टिन 'अगली' छाया करता है। – Matthias
@ माथियास, धन्यवाद। –