inspect
は良い答えですが、あなたのクラス(したがってクラスメソッド)がインタプリタで定義されていれば、それはフラットになります。
をdill
から使用すると、対話的に定義されていても、関数とラムダのソースを取得できます。 また、カリスマで定義されたバインドされたクラスメソッドやバインドされていないクラスメソッドや関数からコードを取得することもできますが、そのコードを囲むオブジェクトのコードなしでコンパイルできない場合があります。 builtin
関数やメソッドについては
>>> 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
>>>
、dill.source
は動作しません... ...しかし
あなたはまだで提案されているように(これでソースコードを含むファイルを開くために、お気に入りのエディタを使用してに頼るする必要はありませんその他の回答)。 builtins
のソースを表示できるとしているcinspect
という新しいパッケージがあります。
変数「next」は、組み込みの 'next'をシャドウするので、「next」を呼んではいけません。 – Matthias
@Matthias、ありがとう。 –