Python 中的 Decorator 大家见得多了,但 Descriptor 用过的估计还少,它主要是 Python 自身来实现库的一些特性,比如 staticmethod 之类的,今天有机会学习、试验了 Descriptor,小有所得,跟大家分享。
今天 Jeff 给我们出了一道难题:有个叫 data 的某个 class 的实例,它有一个 item 属性,它可能是一个对象(姑且假设它是个 str object),也可能是一序列对象(比如 list object),在这个前题下,希望做到以下代码能够工作:
如果你现在觉得没啥,那肯定是没看仔细。我来提醒一下你,最后一行的 output 居然不是 lai 三个字母分成三行!
也就是说 data.item 要做到当它是单个元素的时候,普通场合要跟单元元素一样,而迭代的场合,要跟包含多个元素的序列一样!这个要求太变态了。这么有挑战的问题,我马上祭出 python documentation,天不负苦心人,我找到了 Descriptor 这个我以前从未使用过的特性,最后解决了这个问题。详情多讲无益,直接上代码:
输出:
最后,多说一句这些代码在 py2.6 和 py3.1 下测试通过,兼容两大版本。
分享到:
相关推荐
Python注重解决问题的方法,而不是语法和结构。它被广泛应用于各个领域,包括Web开发、数据分析、人工智能、科学计算等。 Python的优点包括: 简单易学:Python的语法简洁明了,易于理解和学习。 高级特性:Python...
一个将cron表达式转换为人类可读字符串的Python库。 从移植到Python。 作者:亚当·舒伯特(Adam Schubert)( ) 原始作者和信誉:Brady Holt( ) 执照: 特征 支持所有cron表达式特殊字符,包括* /,-? LW,#...
通常,一个 descriptor 是具有“绑定行为”的对象属性。所绑定行为可通过 descriptor 协议被自定义的 __get__() , __set__() 和 __delete__() 方法重写。如果一个对象的上述三个方法任意一个被重写,则就可被称为 ...
主要介绍了Python 描述符descriptor使用原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Descriptor是什么?简而言之,Descriptor是用来定制访问类或实例的成员的一种协议。额。。好吧,一句话是说不清楚的。...而Python则创建了一个名为Pclass、类型(__class__)为type(详情请参见MetaClass
在Python中,访问一个属性的优先级顺序按照如下顺序: 1:类属性 2:数据描述符 3:实例属性 4:非数据描述符 5:__getattr__()方法 这个方法的完整定义如下所示: def __getattr(self,attr) :#attr是self的一个属性名 ...
彻底解决usb错误 一插上usb就报如下错误: / # usb 1-1: new full speed USB device using s3c2410-ohci and address 2 usb 1-1: device descriptor read/64, error -62 usb 1-1: device descriptor read/64, error ...
Python 在 2.2 版本中引入了descriptor(描述符)功能,也正是基于这个功能实现了新式类(new-styel class)的对象模型,同时解决了之前版本中经典类 (classic class) 系统中出现的多重继承中的 MRO(Method Resolution...
里我们将来详解Python中的Descriptor描述符类,包括定义描述符并展示如何调用描述符,需要的朋友可以参考下
Python & Matlab code for local feature descriptor evaluation with the HPatches dataset.zip
资源分类:Python库 所属语言:Python 资源全名:person_descriptor-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
hid descriptor tool USB 描述符生成工具
主要向我们详细介绍了Python描述器descriptor,需要的朋友可以参考下
本文给大家介绍的是Python中比较重要的一个知识点--描述符(Descriptor),描述符(descriptor)是Python语言核心中困扰我时间最长的一个特性,但是一旦你理解了之后,描述符的确还是有它的应用价值的。
descriptor在Python中主要被用来定义方法和属性,使用起来相当具有技巧性,这里我们先从基础的开始,整理一份Python中的descriptor描述器简明使用指南
plugin-descriptor.properties
eclipse一打开就会出现这个情况Loading descriptor for [项目名]这个情况,这里有我的解决办法,希望可以帮到大家。
android linux 开发usb错误-device descriptor read/64, error -62解决方法总结
Report Descriptor分析