我有一个包装函数,返回一个函数。有没有办法以编程方式设置返回的函数的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__是可写的在我的情况下它不是。
我试图自动创建testtest的单元测试。我有一个包装函数,创建一个类对象,它是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
如果我创建这个类,并尝试设置文档字符串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