有没有办法为定义 __call__ 的 python 对象定义文档字符串?
Is there a way to define the docstring for a python object that defines __call__?
我有一个 class 定义了一个 __call__
,但是当用户在帮助 return 上看到对此 "function" 的请求帮助时,他们得到了整个对象和方法,它可能有点令人生畏...如果可能的话,我希望帮助看起来更像一个函数的帮助。
我顺着线索进入了inspect
模块,但是好像不能继承函数类型and/or方法类型,所以这可能是行不通的。我是否遗漏了什么,或者我是否必须重新安排代码以便动态构建真正的 Python 函数对象?
你想要的是做不到的不。 help()
信息(和 inspect
信息等)将显示为 class 和 __call__
方法,而不是函数。
如果您生成的对象除了调用之外不需要支持任何其他功能,您可以使用闭包 return 实际函数:
def produce_callable(*args, **kw):
instance = YourClass(*args, **kw)
def callable_function(*args, **kw):
"""Docstring here"""
return instance(*args, **kw)
return callable_function
因此,您 return 将调用 class 实例的包装函数,而不是 return 您的自定义 class 实例。 help()
将为该函数提供信息。
我在 callable_function()
签名中使用了 *args
和 **kw
通配符参数,但是如果您知道 __call__
方法接受哪些参数,您可以- 在您生成的函数中编写代码。
我有一个 class 定义了一个 __call__
,但是当用户在帮助 return 上看到对此 "function" 的请求帮助时,他们得到了整个对象和方法,它可能有点令人生畏...如果可能的话,我希望帮助看起来更像一个函数的帮助。
我顺着线索进入了inspect
模块,但是好像不能继承函数类型and/or方法类型,所以这可能是行不通的。我是否遗漏了什么,或者我是否必须重新安排代码以便动态构建真正的 Python 函数对象?
你想要的是做不到的不。 help()
信息(和 inspect
信息等)将显示为 class 和 __call__
方法,而不是函数。
如果您生成的对象除了调用之外不需要支持任何其他功能,您可以使用闭包 return 实际函数:
def produce_callable(*args, **kw):
instance = YourClass(*args, **kw)
def callable_function(*args, **kw):
"""Docstring here"""
return instance(*args, **kw)
return callable_function
因此,您 return 将调用 class 实例的包装函数,而不是 return 您的自定义 class 实例。 help()
将为该函数提供信息。
我在 callable_function()
签名中使用了 *args
和 **kw
通配符参数,但是如果您知道 __call__
方法接受哪些参数,您可以- 在您生成的函数中编写代码。