python - 按名称将函数的文档字符串复制到另一个函数

标签 python docstring

我希望通过名称(使用装饰器)在同一文件中复制函数的文档字符串。

我可以很容易地使用当前模块之外的函数来完成它,但是当涉及到同一个模块(或者更具体地说是同一个类)时我有点困惑

这是我目前所拥有的:

import inspect

def copy_doc(func_name: str):
    def wrapper(func):
        doc = ... # get doc from function that has the name as func_name
        func.__doc__ = doc
        return func
    retun wrapper

我正在寻找可以完成以下两个示例的东西:

示例 1:

def this() -> None:
    """Fun doc string"""
    return

@copy_doc('this')
def that() -> None:
    return

print(that.__doc__)

示例 2:

class This:
    def foo(self) -> None:
        """Fun doc string"""
        return None

    @copy_doc('foo')
    def bar(self) -> None:
        return None

print(This().bar.__doc__)

有什么有趣的点子吗?

最佳答案

经过一些测试,我了解到您可以这样做:

from typing import Callable

def copy_doc(copy_func: Callable) -> Callable:
    """Use Example: copy_doc(self.copy_func)(self.func) or used as deco"""
    def wrapper(func: Callable) -> Callable:
        func.__doc__ = copy_func.__doc__
        return func
    return wrapper

class Test:
    def foo(self) -> None:
        """Woa"""
        ...
    
    @copy_doc(foo)
    def this(self) -> None:
        ...
    

print(Test().this.__doc__)

# Outputs:
> Woa

关于python - 按名称将函数的文档字符串复制到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68901049/

相关文章:

python - Keras:在生成器中加载图像与在生成器外部加载图像

python - 如何使用带 Sphinx 的自动模块删除静态类变量?

python - 有没有办法将文档字符串与它们记录的函数分开?

python - 当 docstring 需要一个字符串时,你能传递一个 None 参数吗?

python - PyLint/PyLint3 无法识别文档字符串

python - 在给定条件下为新的 Pandas 列分配值

python - 关于加快旅行商问题的动态规划解决方案的建议?

python - 检查 gdb pretty-print 中的内存

python - 如何将 seaborn 库与 pydatatable 一起使用?

clojure - 多行 Clojure 文档字符串