Runtimetypechecker在运行时通过类型注释执行类型检查

runtime-type-checker的Python项目详细描述


运行时类型检查器

PyPIPyPI - LicenseCode style: black

此包在运行时通过类型注释执行类型检查。在

如何使用此软件包

有两种方法可以使用此包执行类型检查。在

我在这里提供几个简单的例子。要获得完整的概述,请查看包的单元测试。在

1-check_type函数

您可以通过check_type函数对照类型或注释检查对象。在

如果检查成功,函数返回None,或者在出现错误时引发一个TypeError。在

注意,这个函数不会递归地检查类的属性。在

fromtypingimportList,Sequence,Optional,Mappingfromdataclassesimportdataclassfromruntime_type_checkerimportcheck_typecheck_type("a",str)# OKcheck_type(["a"],List[str])# OKcheck_type(["a",1],Sequence[str])# raises TypeError@dataclassclassFoo:a:intb:Optional[Mapping[str,int]]=Nonecheck_type(Foo(1),Foo)# OKcheck_type(Foo(1),int)# raises TypeError

2-check_types decorator

您还可以在创建实例时键入check类,在调用时通过check_types键入函数或方法 装饰工:

^{pr2}$

包装特点和不足

1-特点

  • simplicity:只需要记住一个函数和一个decorator。在
  • robustability:这个包依赖于typing-inspect来完成繁重的工作。此程序包由 typing模块的核心贡献者,这意味着在我这方面很少有黑客在python的旧版本上工作。在

2-短路

  • coverage:我不提供类型注释的所有特性的覆盖范围:例如,Protocol、Generators、IO不是 当前支持。泛型处理得不好。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当一个字段的名称发生变化时,java如何解析这些数据?   编写一个java getBonusPercentage()方法来返回员工的奖金加工资   java向Android活动添加容器和操作栏。   java JVM在切换网络访问点后找不到类   Java Matcher慢速正则表达式   java Android片段视图,带有垂直滚动条和左右滑动手势检测   如何在java中找到数组的所有子集?   java无法从给定源创建信封,因为根元素未命名为envelope   java JavaFX矩形旋转轴从左上角以外的点开始   java Tomcat从关系中获取临时对象   java HttpSession和ServletContext没有给出期望的结果   java EditText正在将自身复制到另一个EditText字段   Jsoup之间的区别是什么。parse()和Jsoup。java中的ParseBodyFragment()?   TableView中的java订单列   函数式编程“展开”可选或可选。在Java流(或并行流)中返回前为空   java如何下载Google Play Games服务保存的游戏快照数据,静默?