如何使用Python强制实现方法接口?

时间:2016-02-10 01:30:00

标签: python types dynamic-typing static-typing

我想创建一个需要特定方法的类,具有特定类型的参数和返回值。 我可以从一个需要实现该方法的抽象类继承 - 但是我没有能力强制特定的参数值并且返回值像Java这样的静态语言(如果我愿意,我可以在运行时抛出错误)。用Python来解决这个问题的最佳方法是什么?已经研究了类型暗示,但我不认为它解决了这个问题。

1 个答案:

答案 0 :(得分:1)

这似乎从根本上说不是pythonic。在python中没有输入函数参数,所以没有办法将参数类型限制为函数。

类型提示对于文档或代码链接很有用,但是python没有使用该信息在运行时强制执行任何操作。

如果你真的想确保接口的有效性(甚至超出参数类型),那么这样做的方法就是使用功能单元测试。

单元测试和测试驱动开发在python社区中如此普遍,以至于类型提示在测试和发现错误方面并没有真正增加。虽然它是一个值得商榷的问题,但有许多人认为,通过使python代码更难以阅读,类型提示的任何好处都会立即被破坏。有一些很有希望的可能性,可以将python编译成C或Java,但是它们还不存在。