使用epydoc,版本3.0.1。
我尝试了这个简单的事情:
def SetNetwork(self, PyLabNetwork net):
"""
Set the net !!!
@param self: How long they should think.
@type self: C{int} or L{PyLabNetwork}
@param net: How long they should think.
@type net: C{int} or L{PyLabNetwork}
"""
self.network = net
跑吧:
epydoc -v -o ./html --name epydoc --css white --docformat epytext cyelp
但是在epydoc生成的html中,方法原型仍然以3个连续的点而不是描述的参数出现:
SetNetwork(...) << ??? NOTHING INSIDE ???
Set the net !!!
Parameters:
self (int or PyLabNetwork) - How long they should think.
net (int or PyLabNetwork) - How long they should think.
有什么想法吗? 非常感谢
编辑:对不起,我刚测试了一个完美运行的简单脚本。之前的情况不起作用,因为它是使用Cython编译的共享对象(.so)。它有所作为。源也无法显示。我认为epydoc只是在文档字符串上工作,关于函数原型的解析,但它似乎比那个更复杂......EDIT2:此外,如果我编译将“embedsignature”cython编译指令传递给“True”,我会得到一些东西 - 这仍然是错误的但我更了解这种现象:
SetNetwork(...)
PyLabNode.SetNetwork(self, PyLabNetwork net)
Set the net !!!
Parameters:
self (int or PyLabNetwork) - How long they should think.
net (int or PyLabNetwork) - How long they should think.
Aka:epydoc不会像嵌入它们那样理解cythonized签名...
如果你有更具体的解释,我仍然是你的男人。 感谢
答案 0 :(得分:0)
知道了。
我删除了cython编译指令,该指令发送了epydoc无法理解的签名:
PyLabNode.SetNetwork(self, PyLabNetwork net)
这有两个缺点:类前缀和类型参数的点分表示法。
并将其替换为一个python,它形成了一个作为文档字符串的第一行,给出:
def SetNetwork(self, PyLabNetwork net):
"""
SetNetwork(self, net)
Set the net !!!
@param self: Handler to this.
@type self: L{PyLabNode}
@param net: The network this node belongs to.
@type net: L{PyLabNetwork}
"""
self.network = net
这就是诀窍。希望这可以帮助一些人。