我有一个定义 a 的类__call__,但是当用户在帮助返回时看到对这个“函数”的请求帮助时,他们获得了整个对象和方法,这可能有点令人生畏......我希望帮助看起来如果可能的话,更像是函数的帮助。
我跟踪了inspect模块,但似乎因为我不能从函数类型和/或方法类型继承,所以这可能不可行。我是否遗漏了什么,或者我是否必须重新安排代码以便我动态构建一个真正的 Python 函数对象?
你想要的是不可行的。的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
Run Code Online (Sandbox Code Playgroud)
因此,不是返回自定义类实例,而是返回一个将调用类实例的包装函数。help()将提供有关该功能的信息。
我在签名中使用了通配符*args和**kw通配符参数callable_function(),但是如果您知道该__call__方法接受哪些参数,则可以在生成的函数中对这些参数进行硬编码。
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |