MyClass派生自“list”:MyClass(列表) 我想很好地记录MyClass。 不幸的是,在尝试帮助时(MyClass), 我得到了自己的文档,但我也得到了很多关于“列表”的内容。
有没有一种简单的方法来控制它? 我读了一些关于元类的东西,但我无法做某事。
感谢您的建议,
米歇尔
答案 0 :(得分:0)
嗯,这就是help
的作用。它会对您的类进行内省,并为类中的每个可调用属性显示名称和关联的__doc__
,并且不可自定义。
超类的属性被认为是类的属性,并且可以在内省Python的帮助中实现。
甚至可以使用元类来自定义当你在类上执行“dir”时获得的输出 - 但它们不会更改帮助文本的输出。要更改“dir”输出,请创建一个实现__dir__
方法的元类,并返回一个您想要显示为dir输出的列表。
class M(type):
def __dir__(self):
return [] # blank dir contents
class MyList(list, metaclass=M):
...
另一方面,为list
属性显示的帮助内容并不详细,实际上可能有用 - 如果您覆盖任何方法来执行与描述不同的操作,则不正确的文本将无法显示。所以你可能只是忍受它。
另一个提示是,您可能更喜欢将list
子类化,而不是子类collections.abc.MutableSequence
,并使用内部聚合(正常)列表来保存您的数据:这将要求您实现更少的数据让你的类作为一个序列正常工作的方法,在大多数情况下最好是子类列表。但这不会改变help
的详细程度。