У меня есть функция-обертка, которая возвращает функцию. Есть ли способ программно установить 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__
можно записать в моем случае, это не так.
Я пытаюсь создать testcases для 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