在为开源编写库时,是否需要进行类型检查?

时间:2017-06-03 11:47:18

标签: python exception-handling open-source

我在我的一个项目中使用了一个小模块。现在我决定将它放在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),如果没有提出适当消息的消息,或者写好文档就足够了?

1 个答案:

答案 0 :(得分:0)

这是非常基于意见的(特别是不适用于StackOverflow)-但我认为您应该同时执行这两项。

一方面,使用isinstance()和异常处理都是好的防御性编码做法。

另一方面,内联文档很好。根据{{​​3}}:

  

用于Python文档的标记是由docutils项目开发的reStructuredText,由自定义指令进行了修改,并使用名为Sphinx的工具集对HTML输出进行后处理。

某些IDE(例如JetBrains PyCharm)已配置为自动选择格式良好的reST文档字符串,并根据这些约定执行自动类型检查(我发现这非常有用)。另请参见:Python developer guidePEP 257