始める無料で始める

デコレータで関数を装飾しても docstring を保持する

友人が困りごとを相談してきました。オープンソースのライブラリで使うために便利なデコレータをいくつか書いて、関数に適用したそうです。ところがテストを実行したところ、装飾された関数から docstring がすべて消えてしまっていることに気づきました。デコレータを書くときに、docstring やその他のメタデータを保持する方法を友人に示してください。

この演習はコースの一部です

Python関数の書き方

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

def add_hello(func):
  def wrapper(*args, **kwargs):
    print('Hello')
    return func(*args, **kwargs)
  return wrapper

# Decorate print_sum() with the add_hello() decorator
____
def print_sum(a, b):
  """Adds two numbers and prints the sum"""
  print(a + b)
  
print_sum(10, 20)
# Define the docstring
print_sum_docstring = print_sum.____
print(print_sum_docstring)
コードを編集して実行