我有一些Python类,其中对象属性仅在运行构造函数时声明,如下所示:
class Foo(object):
def __init__(self, base):
self.basepath = base
temp = []
for run in os.listdir(self.basepath):
if self.foo(run):
temp.append(run)
self.availableruns = tuple(sorted(temp))
如果我现在使用help(Foo)
或者尝试在Sphinx中记录Foo
,那么self.basepath
和 self.availableruns
属性将不会显示。这对我们API的用户来说是个问题。我已经尝试搜索一种标准方法来确保解析器可以找到这些“动态声明”的属性(最好是有docstring),但是目前还没有找到。有什么建议吗?谢谢。
:ivar name:
是标准方法。创建一堆属性不会“显著提高文档质量”。它不会以任何方式改善比:ivar name:
更好的文档。而且你将为了没有更好的文档而做大量的工作。 - S.Lottself.
引用在代码检查中显而易见的子集。创建无法检测到的属性非常容易。使用__getattr__
或__getattribute__
将阻止 IDE 检测。 - S.Lott