Python 类型提示被忽略

问题描述 投票:0回答:3

我是 python 新手,正在尝试类型提示,但它们似乎只在某些情况下起作用。它们似乎在属性返回类型上按预期工作,但是当我尝试将整数分配给字符串值(即 self._my_string = 4)时,我没有报告任何问题。

class TypeHintTest(object):
    _my_string: str

    def __init__(self):
        self._my_string = 4  # no error

    @property
    def as_int(self) -> int:  
        return self._my_string  # Error : expected int got str

结果对象包含一个 int 值(如预期)。

我使用的是pyCharm 2018.3.2社区版,解释器是3.6

下面的问题似乎类似,但是将构造函数更改为

def __init__(self) -> None
的解决方案并没有改变任何东西。 Python:子类构造中的所有类型提示错误似乎都被忽略了

python python-3.x pycharm python-typing
3个回答
3
投票

类型提示,顾名思义,就是提示。如果您为变量分配不同的类型,Python 不会引发错误。
然而,Pycharm 应该说它需要另一种变量类型。


2
投票

@FHTMitchell 指出这是 PyCharm 中的一个错误

请参阅 错误跟踪器条目


0
投票

为了强制执行类型提示,有一个名为 beartype 的模块 它可以为整个包或只是函数等强制执行类型提示...

基本上

from bear type import beartype

@beartype
def func(a:str):   #beartype raises BeartypeCallHintParamViolation if a is not str
    #logic

欲了解更多信息,请访问文档

© www.soinside.com 2019 - 2024. All rights reserved.