def someproperty(self, value):
"""
:type value: int
"""
assert isinstance(value, int)
# other stuff
当用户将值设置为int以外的值时,我希望Pycharm断言。我已经在使用类型提示了。有没有其他方法来获得此功能?提前感谢您提供的任何见解。
答案 0 :(得分:14)
答案 1 :(得分:9)
Python最近在静态类型方面有了很大的发展。从Python 3.5开始,键入提示是一件事。这就是PEP 0484的全部内容。类型提示语法完全基于早期使用PEP 3107引入的函数注释语法。这使PEP 0484成为一种不涉及新语法的变化,使其非常有吸引力且易于适应。
那么,这是如何工作的?对于简单的情况,语法实际上非常直观。例如:
def greeting(name: str) -> str:
return 'Hello ' + name
类型提示系统确实支持非常复杂的事情。您还可以使用用户类型,可调用对象,使用联合的多次重载,甚至是泛型类型。你可以在PEP中看到很多例子。
您还可以在最后一次PyCon上观看关于类型提示的Guido van Rossum’s talk,这非常有趣并且涵盖了很多细节。
最后,通过所有这些类型的提示,我们如何处理它们?好吧,有一个伟大的库已经存在了一段时间,远在Python 3.5和PEP 0484之前。实际上,现在正式引入的类型提示语法是基于该库,但只是形式化。该库名为mypy,基本上是Python的静态类型检查器。安装后,您可以使用mypy
可执行文件来键入检查包含类型注释的任何Python脚本。
例如,让我们将上面的函数定义放在一个文件中,并用错误的类型参数调用它:
greeting(123)
在文件上运行mypy,提供以下输出:
$ mypy test.py
test.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str"
mypy,虽然技术上是实验性的,但它是一个非常强大的工具,非常有效。如果您正在使用类型注释,那么您应该检查它。
答案 2 :(得分:1)
PyCharm 5 seems to support PEP 484。因此,PyCharm 5和Python 3.5的这个问题的一个答案是使用类型提示。