小编Lev*_*145的帖子

用于限制对象中属性类型的函数(Python、mypy)

设置示例:

from typing import Optional


class A(object):
    def __init__(self):
        self.a: Optional[int] = None
        
    def check_a(self) -> bool:
        return self.a is not None
        
a = A()
if a.check_a():
    print(a.a + 1)  # error: Unsupported operand types for + ("None" and "int")
Run Code Online (Sandbox Code Playgroud)

check_a方法检查变量的类型a,但mypy没有看到这一点并写入错误。TypeGuard不会有帮助,因为它可以创建一个函数来检查类型,而不是一个函数来检查对象变量的类型

是否有可能以某种方式让 mypy 注意到这一点,以便使用该函数检查变量的类型,self.a而无需在检查中显式引用它?(使用if a.a_check而不是if a.a is not None)?

python type-hinting mypy python-typing

5
推荐指数
1
解决办法
1048
查看次数

标签 统计

mypy ×1

python ×1

python-typing ×1

type-hinting ×1