当前位置: 首页 > 面试题库 >

如何以编程方式设置文档字符串?

劳韬
2023-03-14
问题内容

我有一个返回一个函数的包装函数。有没有办法以编程方式设置返回函数的文档字符串?如果可以写信,__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

问题答案:

我会将文档字符串传递给工厂函数,并用于type手动构造类。

def make_testcase(filename, myfunc, docstring):
    def test_something(self):
        data = loadmat(filename)
        result = myfunc(data)
        self.assertTrue(result > 0)

    clsdict = {'test_something': test_something,
               '__doc__': docstring}
    return type('ATest', (unittest.TestCase,), clsdict)

MyTest = makeTestCase('some_filename', my_func, 'This is a docstring')


 类似资料:
  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。

  • 问题内容: 这个问题类似于: jsf:在UI中绑定到inputtext的integer属性在提交时设置为零 但是我对解决方案并不完全满意。上下文是相同的:我有一个Web表单,需要一个Integer值。如果文本框为空,我希望我的Integer字段为“null”,但是EL Parser会自动将我的id字段设置为“ 0”。 我可以通过在本地Tomcat VM中设置JVM参数来解决此问题: -Dorg.a

  • 我习惯于用JavaFx编写如下所示的代码,因为这就是我几年前学习的方式。 我最近安装了JetBrains IntelliJ IDEA Ultimate Edition 2018.1.6,我发现要打开primaryStage窗口,我需要一个fxml文件。 我必须这么做, 如果我运行第一个代码片段,什么都不会显示。但是如果我用FXMLLoader.load(getClass(). getResourc

  • 我尝试了以下代码: 但是我得到了一个错误:我正在从外部源获取颜色十六进制,因此无法将其嵌入颜色中。xml。此外,我想改变色调,而不是背景,所以挫折是不是一个选项。

  • 我有一个非常简单的Spring Boot应用程序,它使用Flyway进行数据库迁移。我想在迁移开始之前使用Spring配置类以编程方式设置Flyway占位符。 我假设迁移在配置文件被处理之前就开始了。怎么解决这个?我不想使用application.properties设置flyway占位符,但所有其他属性(如、等)都希望由application.properties设置。

  • 如何在java中向文本视图添加样式?我试图在我的价值观/风格下添加一个。xml,而不是单独添加每个属性。