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