在平面方法中编辑 __doc__?

野牛

我正在尝试围绕我编写的 api 制作一个超薄的 cli 包装器。似乎__doc__dunder attr 是在导入时设置的。

>>> def foo():
...     """
...     doc
...     """
...     pass
...
>>> foo.__doc__
'\n\tdoc\n\t'

我发现我可以__doc__在方法内更改

>>> def foo():
...     foo.__doc__ = "new doc"
...
>>> foo.__doc__
>>> foo()
>>> foo.__doc__
'new doc'

但这需要运行该方法。

我正在编写一个点击工具,这允许file.py --help打印文档。但是,因为这是一个瘦包装器,所以只要将它编辑__doc__为与 doc 内部调用的任何方法相同就很好

API.py

class FOO:
    def bar():
        """
        Some long doc string
        """
        pass

剪贴画

import click

import API

@click.command()
def hello():
    """
    not what I want
    """
    hello.__doc__ = API.FOO.bar.__doc__
    API.FOO.bar()


if __name__ == '__main__':
    print(hello.__doc__)
    hello()
    print(API.FOO.bar.__doc__)

我得到以下...运行时 pyhton3.6 cli.py

not what I want


Some long doc string

当我跑 python3.6 cli.py --help

Usage: cli.py [OPTIONS]

  not what I want

Options:
  --help  Show this message and exit.

有什么办法可以将导入方法中的文档字符串注入到click方法中吗?也许装饰器在导入时解析,但我不确定如何完成。谢谢。

西蒙

如果您将 doc 更改实现为函数的装饰器,它将在导入时运行。

def change_doc(function):
        function.__doc__="my text"
        return function

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

__doc__ 是 None 与方法但不是与功能

在Python 3脚本中打印(__doc__)

如何在Python 3中动态调用诸如__doc__之类的内置方法?

如何使用inspect或__doc__方法打印python方法文档

jedi-vim 如何关闭 __doc__ 窗口并从缓冲区列表中删除?

为什么Python不会在__doc__中自动转义'\'?

我知道 eval() 是不好的做法;我的代码是否有替代方法,涉及获取文件夹中所有文件中所有函数的 __doc__ ?

实例上的Python __doc__文档

Python __doc__行为2.6与2.7

如何强制帮助使用覆盖的__doc__

如何使用matplotlib以乳胶形式显示f .__ doc__?

如何让 PyCharm 查看由`__doc__` 赋值指定的 doctest

无法从 argparse 访问 __doc__ 而不重新定义它

functools.wrapper-AttributeError:“类型”对象的属性“ __doc__”不可写

向用户询问函数名称,然后打印 .__doc__,不起作用

elasticsearch 6.0.0中的“ _doc”

如何在React Native中编辑平面清单项目

如何使用codeigniter在编辑页面中显示上传的文件(如doc、img等...)

doc中的'find'-perm示例

有什么方法可以在doc注释(由cargo doc呈现)中内联const?

如何加载和编辑richtexbox中的.docx/.doc文件或winforms中的任何其他控件,文档格式正确?

脚本以编辑Google Doc,然后转换为PDF

是否可以使用 Python 编辑 MS word doc 文件?

区分.xls和.doc文件的正确方法?

Java文档覆盖方法不继承Doc

Web API中的编辑方法

在TextArea Java中插入文档(.doc)

在Word文件(doc文件)中呈现表格

grep在* .odt或* .doc文件中的文本?