在PyCharm中可以有静态类型Assert吗?

mlmc2os5  于 9个月前  发布在  PyCharm
关注(0)|答案(3)|浏览(149)

我希望Pycharm在用户将值设置为int以外的值时Assert。我已经使用了类型提示。有没有其他方法可以获得此功能?

def someproperty(self, value):
    """
    :type value: int
    """
    assert isinstance(value, int)
    # other stuff

字符串

5lwkijsr

5lwkijsr1#

使用pycharm,你可以得到一些接近静态类型检查,使用类型声明和增加“类型检查器”检查的严重性:


的数据
这将使类型检查在代码中非常突出:


jjjwad0x

jjjwad0x2#

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,虽然在技术上是实验性的,但它是一个非常强大的工具,工作得非常好。如果你喜欢这个东西,并且想采用类型注解,那么你真的应该看看它。

zysjyyx4

zysjyyx43#

PyCharm 5 seems to support PEP 484。因此,对于PyCharm 5和Python 3.5来说,这个问题的一个答案是使用类型提示。

相关问题