【问题标题】:Is there a way to define the docstring for a python object that defines __call__?有没有办法为定义__call__的python对象定义文档字符串?
【发布时间】:2015-10-05 14:42:46
【问题描述】:

我有一个定义__call__ 的类,但是当用户在帮助返回时看到此“函数”的请求帮助时,他们会得到整个对象和方法,这可能有点令人生畏......我如果可能的话,希望帮助看起来更像函数的帮助。

我跟踪到inspect 模块,但似乎因为我不能从函数类型和/或方法类型继承,所以这可能不可行。我是否遗漏了什么,或者我必须重新安排代码以便动态构建真正的 Python 函数对象?

【问题讨论】:

    标签: python callable


    【解决方案1】:

    你想要的是不可行的。 help() 信息(和 inspect 信息等)将显示为具有 __call__ 方法的类,而不是函数。

    如果你生成的对象除了调用之外不需要支持任何东西,你可以使用闭包来返回一个实际的函数:

    def produce_callable(*args, **kw):
        instance = YourClass(*args, **kw)
        def callable_function(*args, **kw):
            """Docstring here"""
            return instance(*args, **kw)
        return callable_function
    

    因此,不是返回您的自定义类实例,而是返回一个将调用该类实例的包装函数。 help() 将提供该功能的信息。

    我在callable_function() 签名中使用了*args**kw 通配符参数,但是如果您知道__call__ 方法接受哪些参数,您可以在您生成的函数中对它们进行硬编码。

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 2023-02-15
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      相关资源
      最近更新 更多