鹅型

GooseTypes的Python项目详细描述


Goose Types是一个Python库,用于支持自定义 类型检查的方法。

goose类型是具有自定义方法的类,这些方法定义 isinstance()issubclass()检查它们自己,以及 以及一些相关的注释和错误处理。换句话说,一个 goose类型是python的metaclass hooks for custom instance and subclass checks的前端。

与duck类型的关系

这与duck typing有关,甚至可以解释为 它的实现,但它有细微的不同。

nominalstructural类型系统中的类型相反,duck 类型由选中的部分结构或行为定义 运行时。从这个意义上说,鹅的类型是一样的但是,duck输入法 通常与两种不同于 鹅打字。

duck类型的一种方法是应用eafp:假设输入 实现所需的结构和行为,并依赖于错误 处理(根据需要补充)不符合要求的输入。 对于简单的duck类型和松散的验证,这是一种很好的方法 需求,但对于需要严格检查复杂 类型描述、验证和错误处理代码可以是 笨重,乱扔东西,掩盖了它的本质 功能。

另一种方法是在 属性或方法的级别,有时与检查 参数的多样性。通过检查对象的属性, 可以检查接口条件的组合,例如 属性名、方法名和参数多重性,在 开始一项破坏性的或昂贵的任务。

与后一种方法一样,goose类型在 需要预先执行复杂的验证对于鹅型, 要从函数体提取到 goose类型的主体,留下对isinstance()issubclass()。从某种意义上说,这是运行时检查 理想的接口行为,这就像duck类型。然而,与 传统的鸭子打字“走路”和“嘎嘎”测试,可以使用 对于与 需要的,而不是乱扔那些只需要 调用类型检查。

更改日志

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

推荐PyPI第三方库


热门话题
NetBeans中的Java Swing滚动窗格   java如何与具有复合键的表建立关系?   Android中读取文件时java数据丢失   java黄瓜场景。embed在ubuntu机器上不工作?   java从spring mvc控制器操作中,我如何获得请求/响应的访问权限?   java减去两个长值   java选择下一个值firebase 安卓   用于起始和结尾连字符的java正则表达式   Java正则表达式解释   java Lifefay freemarker ADT:方法不可用?   java我怎样才能让我的开关盒作用于JFrame?   java在我的场景中使用连接池的理想方式是什么   java我如何接受jsoup的cookies?   java如何将整数数组更改为字符串数组?   java Android操作\u指针\u向上直到剩余触摸移动时才调用   java为什么gradle会出错?   io如何在java中复制/拆分输入流?   java使JButton不可见,但尊重其原始空间   java Spring提交表单获取复选框值不起作用