我在我的一个项目中使用了一个小模块。现在我决定将它放在github上,所以现在我正在编写一些文档字符串并清理代码。
我有2个类的组合,所以初始化看起来像这样:
foo = Class_1()
bar = Class_2(param1=foo)
我知道Class_2
的第一个参数必须是Class_1
的实例,否则代码将无效。但是,在我编写Class_2
代码时,我可能会很清楚,但是当使用模块作为API时,可能不清楚用户param1
必须是Class_1
的实例。如果有人使用bar = Class_2(param1='foo')
。引用将是坏的,将无法理解发生了什么。所以问题是:我是否需要检查我的__init__
isinstance(param1, Class_1)
,如果没有提出适当消息的消息,或者写好文档就足够了?
答案 0 :(得分:0)
这是非常基于意见的(特别是不适用于StackOverflow)-但我认为您应该同时执行这两项。
一方面,使用isinstance()
和异常处理都是好的防御性编码做法。
另一方面,内联文档很好。根据{{3}}:
用于Python文档的标记是由docutils项目开发的reStructuredText,由自定义指令进行了修改,并使用名为Sphinx的工具集对HTML输出进行后处理。
某些IDE(例如JetBrains PyCharm)已配置为自动选择格式良好的reST
文档字符串,并根据这些约定执行自动类型检查(我发现这非常有用)。另请参见:Python developer guide和PEP 257。