class 字段的类型注释
Type annotations for class fields
我正在尝试注释 class 字段,但 mypy (0.670) 未能在以下代码中引发问题:
class X(object):
x: int
def __init__(self):
self.x = "a"
x = X()
有没有办法使用 mypy 对 class 字段执行类型检查?如果没有,有没有办法在 运行 时间轻松完成?
最终使用 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)
我正在尝试注释 class 字段,但 mypy (0.670) 未能在以下代码中引发问题:
class X(object):
x: int
def __init__(self):
self.x = "a"
x = X()
有没有办法使用 mypy 对 class 字段执行类型检查?如果没有,有没有办法在 运行 时间轻松完成?
最终使用 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)