Python 文档字符串重复参数文本
Python docstring repeated param text
在一个 Python 模块中(设计用于 IPython Notebooks 由非技术用户使用),我有几个功能:
load_this(dt, this_filter)
load_that(dt, that_filter)
load_the_other(dt, the_other_filter)
每个函数的 dt 参数的文档字符串都是相同的:
:param dt: date, date tuple, or datetime tuple.
date type args expand to start and end of day.
eg. date(2015, 9, 9) or
(date(2015, 9, 9), date(2015, 9, 10)) or
(datetime(2015, 9, 9, 12, 30), datetime(2015, 9, 9, 1))
但是 x_filter 参数的文档环在每种情况下都不同。
我尽量在我的代码中保持干爽,所以重复的文档字符串有点刺耳。有什么方法可以在代码中交叉引用文档字符串参数,但仍然 IPython 显示完整的文档字符串。
谢谢
您可以通过装饰器向函数添加文档
def mydoc(func):
func.__doc__ = 'Here I am.'
return func
@mydoc
def load_this(dt):
pass
带有自定义文档的变体
def setdoc(docstring):
def decor(func):
func.__doc__ = docstring
return func
return decor
@setdoc('Here I am.')
def load_this(dt):
pass
或者在定义函数后添加文档
docmessage = 'Here I am.'
def load_this(dt):
pass
load_this.__doc__ = docmessage
不是以编程方式生成文档字符串(在我看来相当非 pythonic),是什么阻止你定义一个函数 load
like
def load(dt, filter_):
... ...
并为它写一个文档?我真的看不出需要 3 个独立的功能。
即使你有些怎么做,你总是可以创建它们,在定义上面的函数 load
之后,由 partial
ing 它们。
编辑:在 OP 的评论之后,我认为您可以简单地在其中一个函数(大概是最基本的 "prototype" 一个)和其他函数中为 dt
编写一次文档简单地说
"See the documentation of ___ for details about dt".
是的,你可以像
一样巧妙地拼接文档字符串
some_function.__doc__ = some_function.__doc__ + "doc for dt"
或者比编写自己的文档生成元类生成器因子工厂框架更聪明,但为什么呢? ;)
在一个 Python 模块中(设计用于 IPython Notebooks 由非技术用户使用),我有几个功能:
load_this(dt, this_filter)
load_that(dt, that_filter)
load_the_other(dt, the_other_filter)
每个函数的 dt 参数的文档字符串都是相同的:
:param dt: date, date tuple, or datetime tuple.
date type args expand to start and end of day.
eg. date(2015, 9, 9) or
(date(2015, 9, 9), date(2015, 9, 10)) or
(datetime(2015, 9, 9, 12, 30), datetime(2015, 9, 9, 1))
但是 x_filter 参数的文档环在每种情况下都不同。
我尽量在我的代码中保持干爽,所以重复的文档字符串有点刺耳。有什么方法可以在代码中交叉引用文档字符串参数,但仍然 IPython 显示完整的文档字符串。
谢谢
您可以通过装饰器向函数添加文档
def mydoc(func):
func.__doc__ = 'Here I am.'
return func
@mydoc
def load_this(dt):
pass
带有自定义文档的变体
def setdoc(docstring):
def decor(func):
func.__doc__ = docstring
return func
return decor
@setdoc('Here I am.')
def load_this(dt):
pass
或者在定义函数后添加文档
docmessage = 'Here I am.'
def load_this(dt):
pass
load_this.__doc__ = docmessage
不是以编程方式生成文档字符串(在我看来相当非 pythonic),是什么阻止你定义一个函数 load
like
def load(dt, filter_):
... ...
并为它写一个文档?我真的看不出需要 3 个独立的功能。
即使你有些怎么做,你总是可以创建它们,在定义上面的函数 load
之后,由 partial
ing 它们。
编辑:在 OP 的评论之后,我认为您可以简单地在其中一个函数(大概是最基本的 "prototype" 一个)和其他函数中为 dt
编写一次文档简单地说
"See the documentation of ___ for details about dt".
是的,你可以像
一样巧妙地拼接文档字符串some_function.__doc__ = some_function.__doc__ + "doc for dt"
或者比编写自己的文档生成元类生成器因子工厂框架更聪明,但为什么呢? ;)