是否可以将docstring用于普通变量?例如,我有一个名为的模块t
def f():
"""f"""
l = lambda x: x
"""l"""
Run Code Online (Sandbox Code Playgroud)
而我呢
>>> import t
>>> t.f.__doc__
'f'
Run Code Online (Sandbox Code Playgroud)
但
>>> t.l.__doc__
>>>
Run Code Online (Sandbox Code Playgroud)
示例类似于PEP 258(搜索"this is g").
我有一个应该有的模块@property,我通过将类设置为模块来解决这个问题.我从这个答案中得到了一个想法:懒惰的模块变量 - 可以做到吗?
我希望这个可重复且易于使用,所以我为它制作了一个元类.这就像一个魅力.
问题是,当使用Sphinx生成文档属性时,请不要记录.其他所有内容都按预期记录.我不知道如何解决这个问题,也许这是Sphinx的一个问题?
模块:
import sys
import types
class ClassAsModule(type):
def __new__(cls, name, bases, attrs):
# Make sure the name of the class is the module name.
name = attrs.pop('__module__')
# Create a class.
cls = type.__new__(cls, name, bases, attrs)
# Instantiate the class and register it.
sys.modules[name] = cls = cls(name)
# Update the dict so dir works properly
cls.__dict__.update(attrs)
class TestClass(types.ModuleType):
"""TestClass docstring."""
__metaclass__ = ClassAsModule
@property
def some_property(self):
"""Property docstring."""
pass
def …Run Code Online (Sandbox Code Playgroud) 我正在阅读sphinx文档页面,具有讽刺意味的是,关于var,ivar和cvar之间差异的文档非常缺乏.我想知道是否有人可以解释内联代码中每个不同名称空间之间的区别.
例:
class foo(object):
"""
:var str first:
:ivar str last:
:cvar str middle:
"""
Run Code Online (Sandbox Code Playgroud)
这些狮身人面像标签中的每一个如何彼此不同,我如何知道哪一个是正确使用的设计?