関数を返すラッパー関数があります。返された関数の docstring をプログラムで設定する方法はありますか? 私が書くことができるなら、私は__doc__次のことをします:
def wrapper(a):
def add_something(b):
return a + b
add_something.__doc__ = 'Adds ' + str(a) + ' to `b`'
return add_something
それから私はすることができました
>>> add_three = wrapper(3)
>>> add_three.__doc__
'Adds 3 to `b`
ただし、__doc__読み取り専用なので、それはできません。正しい方法は何ですか?
編集:わかりました、これを単純にしたかったのですが、もちろん、これは私が実際にやろうとしていることではありません。私の場合、一般的__doc__には書き込み可能ですが、そうではありません。
unittestのテストケースを自動的に作成しようとしています。のサブクラスであるクラス オブジェクトを作成するラッパー関数がありますunittest.TestCase。
import unittest
def makeTestCase(filename, my_func):
class ATest(unittest.TestCase):
def testSomething(self):
# Running test in here with data in filename and function my_func
data = loadmat(filename)
result = my_func(data)
self.assertTrue(result > 0)
return ATest
このクラスを作成して docstring を設定しようとするとtestSomething、エラーが発生します。
>>> def my_func(): pass
>>> MyTest = makeTestCase('some_filename', my_func)
>>> MyTest.testSomething.__doc__ = 'This should be my docstring'
AttributeError: attribute '__doc__' of 'instancemethod' objects is not writable