Tôi có hàm bao hàm trả về hàm. Có cách nào để lập trình docstring của hàm trả về không? Nếu tôi có thể viết thư cho __doc__
Tôi muốn làm như sau:Làm cách nào để đặt docstring theo chương trình?
def wrapper(a):
def add_something(b):
return a + b
add_something.__doc__ = 'Adds ' + str(a) + ' to `b`'
return add_something
Sau đó, tôi có thể làm
>>> add_three = wrapper(3)
>>> add_three.__doc__
'Adds 3 to `b`
Tuy nhiên, vì __doc__
là read-only, tôi không thể làm điều đó. Cách chính xác là gì?
Chỉnh sửa: Ok, tôi muốn giữ điều này đơn giản, nhưng tất nhiên đây không phải là những gì tôi thực sự đang cố gắng thực hiện. Mặc dù nói chung, __doc__
có thể ghi được trong trường hợp của tôi.
Tôi đang cố gắng tạo testcases cho unittest
tự động. Tôi có một chức năng bao bọc tạo ra một đối tượng lớp đó là một lớp con của 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
Nếu tôi tạo lớp này và cố gắng thiết lập các docstring của testSomething
tôi nhận được một lỗi:
>>> 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
Tại sao bạn không chỉ cần viết một docstring? –
@RaeKettler: Bởi vì sau đó nếu bạn cập nhật nó, bạn phải luôn luôn nhớ cập nhật thủ công tất cả các bản sao khác trong tất cả các hàm bao bọc khác – endolith