1. ホーム
  2. python

Python関数のDocstringを関数内部から表示する方法は?

2023-10-10 19:23:17

質問

Python関数のdocstringを関数自体の内部から表示したいです。 たとえば、次のようになります。

def my_function(self):
  """Doc string for my function."""
  # print the Docstring here.

今のところ、私はこれを直接 my_function が定義された後に直接行っています。

print my_function.__doc__

しかし、むしろ関数にこれ自身をやらせる方がよいでしょう。

私は print self.__doc__ print self.my_function.__doc__print this.__doc__ をmy_functionの中に入れていますが、これはうまくいきませんでした。

どのように解決するのですか?

def my_func():
    """Docstring goes here."""
    print my_func.__doc__

という名前にバインドされているオブジェクトを変更しない限り、これは動作します。 my_func .

new_func_name = my_func
my_func = None

new_func_name()
# doesn't print anything because my_func is None and None has no docstring

これを行うような状況はかなり稀ですが、実際に起こります。

しかし、このようにデコレータを書くと

def passmein(func):
    def wrapper(*args, **kwargs):
        return func(func, *args, **kwargs)
    return wrapper

これで、こんなことができます。

@passmein
def my_func(me):
    print me.__doc__

そして、これは関数が自分自身への参照を得ることを確実にします(類似の self のような)自分自身への参照を最初の引数として受け取るので、 常に正しい関数の docstring を取得できるようになります。 メソッド上で使用される場合、通常の self が第二引数になります。