我有一个类工厂,它生成一个带有绑定到另一个类的函数的类。当一个类继承自生成的类时,它会获得适当的函数。现在我想记录生成的类'函数,否则我必须检查类工厂以查看函数的作用,或者类工厂的文档必须描述所有生成的类的函数。
班级工厂:
def greeter(name):
"""Generate a greeter for the given name."""
class Greeter(object):
def greet(self):
print('Hello {}.'.format(name))
greet.__doc__ = "Greet someone by the name of {!r}".format(name)
return Greeter
这是用法:
class GreetArthur(greeter('Arthur')):
pass
GreetArthur().greet() # Prints 'Hello Arthur.'
现在,当Sphinx对此进行记录时,很明显GreetArthur
继承自Greeter
,但Greeter
从未记录,因为它已生成。因此,从文档中不清楚GreetArthur
是否具有函数greet
。
greeter(name)
Generate a greeter for the given name.
class GreetArthur
Bases: Greeter
期望的结果:
greeter(name)
Generate a greeter for the given name.
class GreetArthur
Bases: Greeter
greet()
Greet someone by the name of 'Arthur'.
答案 0 :(得分:0)
看起来:inherited-members:
可以解决问题。它适用于:automodule:
和:autoclass:
。
.. automodule:: greet
:members:
:inherited-members:
或
.. autoclass:: greet.GreetArthur
:members:
:inherited-members:
这将导致:
class greet.GreetArthur
greet()
Greet someone by the name of 'Arthur'.
答案 1 :(得分:-1)
根据sphynx autodoc documentation,一个空的:member:autoclass选项看起来应该可以解决问题。如果没有,那么您可能需要在模块级别公开Greeter实现,而不是将其隐藏在工厂闭包中,以便sphynx在导入模块时可以看到它以查找文档字符串。