类和函数的集合,使描述符的创建更简单、更快

descriptor-tools的Python项目详细描述


< >[巨蟒](https://img.shields.io/badge/python-3.3+-brightgreen.svg)(https://www.python.org/) [![版本](http://amzn.to/2sd2ubt" rel="nofollow">https://img.shields.io/badge/edition-2-aa3333.svg)(http://amzn.to/2sd2ubt) ![版本](https://img.shields.io/badge/version-1.1beta-992222.svg" rel="nofollow">https://img.shields.io/badge/version-1.1beta-992222.svg) #描述符工具 使描述符的创建更简单的类和函数的集合 更快。这个图书馆里提出的大多数想法都已提出,但没有 完全充实在我的书中,[python描述符](https://amzn.to/2hal6ge) (第二版)。

这个库提供的第一个主要贡献是属性绑定 请参见下面的),以及许多用于构建使用它的描述符的帮助程序。

下一个主要贡献是一组decorators(gof风格和方法 decorators)和mixins,这两个模块都是唯一不能 直接从描述符工具包访问的成员。而一切 否则在那里是公共的,必须访问decorators 从descriptor_tools.decorators,必须从 描述符工具。混音。

请参阅相应模块的文档以了解更多有关它们的信息。

###属性绑定 属性绑定就像python中的方法绑定一样。当你提到 方法通过其类名而不调用它(例如,class name.method\u name), 您将得到一个方法的版本,它可以接受一个实例(以及其他 必要参数)调用时,而不是直接绑定到 实例。在Python2中,这些方法曾被称为"未绑定方法",但现在 在python 3中作为函数实现。

尽管如此,它们仍然是未绑定的方法。现在有可能 未绑定属性。如果使用使用 属性绑定,可以从类中获取未绑定的属性(例如 classname.attr_name),然后可以像调用 实例作为参数并返回该实例的属性值。检查 有关此技术的好处,请参阅unbundattribute上的文档。

###特殊访问器类型 在这本书中,有四种不同的访问方式, 思想在整个代码库中传播。

第一个是绑定描述符,它实现属性绑定, 上面提到过。

其他三种是实现"只读"属性的不同方法: 一次设置、强制设置和机密设置。

set once类型只允许每个实例调用一次。 如果再试一次,它会引发一个属性错误

强制集方法与秘密集方法相似,因为它们都是 允许多次设置属性,但必须在 从后门绕过去。强制设置允许您调用 描述符上的方法,但必须提供 参数,force=true以便它不会引发attributeerror

秘密集描述符使用"secret"方法来设置属性,即 通常是set()方法(与set()方法相反)。这是 一般来说,它不需要任何人,所以比强制设置的样式更受欢迎 显式调用"magic"方法,并且它不会更改 协议方法。

###新增:实例属性! 书中没有提到这些是因为它们是新的,但是如果这本书 得到一个新版本,它们肯定会被添加。什么是实例属性? 它们是一个微型框架我的工作,你委托给所谓的"委托" 属性,我从科特林语言中"偷"来的一个术语和概念。

委托属性类似于描述符,但由于 instancepropertywrapper/delegator,类的每个实例都存在一个 他们被分配到。这允许您编写一个类来处理 更简单的属性情况,只需要关心一个 与之关联的一个实例的值。看看他们!目前 只有在实例属性中找到的文档字符串中有关于它们的文档 包裹。稍后,将提供更方便的文档,希望在 在github wiki上也可以阅读这些文档。

###新增:通用描述符存储 在存储模块中,有一个新接口,描述符存储。这个 接口定义了一组方法,使得它的行为基本上像字典一样, 但它也有一些东西可以保存和/或查找 描述符被分配给的属性,允许它提供更好的错误 当引发attributeerror时的消息,需要额外的一点负载 关闭描述符写入程序。

###其他注意事项 库中有很多小的helper函数和类, 最明显的是那些用于从类中获取描述符对象(防止 从触发描述符的 提供在属性为只读时为其赋值的通用方法 (因为通常必须有后门来初始化值)。

最后,还有一些新的"property"类型:bindingproperty,它提供了 属性绑定到属性;常量,使用withconstants()定义 函数;以及允许属性延迟实例化的lazyproperty, 给出一种评估方法。

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

推荐PyPI第三方库


热门话题
java嵌套循环打印一个数字,旁边有相同数量的星号   java JodReports替代方案   java如何将模型类parcelable对象从片段传递到活动?   java JCS缓存删除功能不删除特定元素   如何打开。Java的dll文件。   java在这种情况下如何选择聚合根?   java从CellEditorListener获取编辑的TreeNode   Java到web服务和mysql   从openssl ec在Java中创建公钥时出现加密无效密钥异常   Java数组:添加多个数组的元素时忽略空数组   java在初始化后向fragment发送数据   JButtons的java数组正在返回void   若联接列不包含特定值,则java JPA条件生成器仅返回实体   java ActionBar问题:NPE   java Portlet是被广泛使用还是非常罕见?