【发布时间】:2016-02-10 01:29:59
【问题描述】:
我想创建一个需要特定方法的类,具有特定类型的参数和返回值。 我可以从需要实现该方法的抽象类继承 - 但我没有能力强制特定的参数值和返回值 ala 像 Java 这样的静态语言(如果我愿意,我可以在运行时抛出错误)。用 Python 解决这个问题的最佳方法是什么?已经研究过类型提示,但我认为它不能解决这个问题。
【问题讨论】:
-
如果你真的需要这个,你可以查看 MyPy:mypy-lang.org,但我认为 CPython 中不存在这个功能。类型提示是最接近的。
-
是的,我不确定这是否可能。我认为 MyPy 是 Python 3 中的类型提示基于什么?或者也许他们只移植了其中的一部分
-
你说得对,PEP-484 基于 MyPy。如果您希望在运行时强制执行参数输入,恐怕您使用了错误的语言。 Python 根本不这样做,只是在方法中添加了显式的
isinstance检查。 -
如果您正在寻找方法的运行时签名验证,您可以查看github.com/RussBaz/enforce 模块。但是,它并不是为了从 Python 中生成 Java,而且它还远不是一个生产就绪的库。请小心!
标签: python types dynamic-typing static-typing