1

我正在尝试注释类字段,但 mypy (0.670) 未能在下面的代码中引发问题:

class X(object):
    x: int
    def __init__(self):
        self.x = "a"

x = X()

有没有办法使用 mypy 对类字段执行类型检查?如果没有,有没有办法在运行时轻松完成?

4

1 回答 1

0

typeguard最终使用该模块编写了一个简单的运行时检查。

import typing
import typeguard

def check_class_hints(obj):
    hints = typing.get_type_hints(obj.__class__)
    for (name, hint_ty) in hints.items():
        val = getattr(obj, name)
        typeguard.check_type(name, val, hint_ty)

class X(object):
    x: int
    def __init__(self):
        self.x = "a"

x = X()
check_class_hints(x)
于 2019-07-03T14:33:01.560 回答