我有一个返回函数的包装器函数。是否有办法以编程方式设置返回函数的文档字符串?如果我可以写入 __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
如果我创建这个类并试图设置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