首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python描述符

1、描述符定义  描述符是与特定属性互相绑定一种协议,通过方法被触发修改属性,这些方法包括__get__(),__set__(),__delete__().将这些方法定义在类中,即可实现描述符...2、属性与__dict__ Python中类有属于自己字典属性,经过类实例化对象也同样有自己字典属性,__dict__ 1 class Foo(object): 2 x=10 3...Foo类中三个方法,t为Test实例化对象,触发构造方法init,执行self.x=y(10),实际类属性与实例新增属性x是井水不犯河水,无相关联,但是类属性x是描述符属性,被Foo代理,python...这涉及到优先级顺序问题,当解释器发现实例字典中有与描述符属性同名属性时,描述符优先与实例属性,会覆盖掉实例属性。可以通过类字典验证 1 print(Test....6、描述符优先级别顺序 上面已经提到,当无set方法描述符称为非数据描述符,有set和get为数据描述符。这2者有啥区别?优先级别的大区别!!!

50420

Python描述符使用

Python描述符使用 前言 作为一位python使用者,你可能使用python有一段时间了,但是对于python描述符却未必使用过,接下来是对描述符使用介绍 场景介绍 为了引入描述符使用,...使用描述符 首先看一下描述符概念 描述符就是一个“绑定行为“对象属性,在描述符协议中,它可以通过方法充写属性访问。...然后因为是描述符,于是会执行描述符set特殊方法。...相关属性查找顺序可以参考https://www.cnblogs.com/Jimmy1988/p/6808237.html 描述符set特殊方法参数有为 self :是描述符实例 instance...最后,本文是对描述符使用做了简单介绍与讲解,如需更加深入了解可以参考《流畅Python》属性描述符部分 ​

45320
您找到你想要的搜索结果了吗?
是的
没有找到

Python描述符(上)

描述符概念 我觉得要想了解描述符,理解这两个关键字即可。类,托管。 描述符本质上就是一个类,可以将其他类属性托管给这个类(描述符)。...小试牛刀 类 描述符本质上是个类,那我们定义一个普通类肯定不是描述符,只要有__get__,__set__,__delete__魔术方法之一类就是描述符。...,其中有__get__魔术方法;在A类中,我们将描述符赋值给类x属性,这样x属性就被描述符托管了,当我们访问x属性时,就会触发描述符get方法。...描述符方法 __get__魔术方法 上面的内容让我们了解了数据描述符,那现在我们再仔细学习下描述符各种方法和使用,首先是__get__方法。 触发时间:在访问对象成员属性时候触发。...作用:设置属性值。 参数:self为描述符对象,instance为被托管对象,owner为被托管类。 返回值:属性值。

36050

Python描述符(下)

前言 上节课我们讲解了描述符概念和使用,其实,除了上次定义类(__get__,__set__,__delete__)这种描述符方式外,还有其他两种设置描述符方式,这节课我们就来一起学习吧。...property函数 这种写法使用并不是很多,我们定义好获取、设置和删除属性方法,把他们传入到property函数中即可。...User() print(user.age) user.age = -1 0 ValueError: 年龄必须大于等于0 property装饰器 最后一种方法是使用property装饰器,装饰器下age...函数,其实就是管理age属性,然后通过setter和deleter分别设置和删除属性。...def age(self): pass user = User() print(user.age) user.age = -1 0 ValueError: 年龄必须大于等于0 今天分享就到这了

32510

有效python属性管理:描述符使用

blog:http://ipytlab.com github:https://github.com/PytLab ❈—— 前言 最近使用描述符对自己催化动力学模拟程序进行了改进,在Python描述符帮助下实现了更加灵活而且强大有效属性管理...本文就以自己程序中运用描述符来进行有效python属性管理为例子,介绍python描述符概念以及如何更好使用描述符这个强有力工具帮助我们有效管理python程序中数据访问控制。...这时候就要召唤Python描述符机制了,他存在是python开发者能够复用与属性相关逻辑。 描述符协议 Python描述符协议是一种再模型中引用属性时将要发生事件方法。...Python会对属性访问操作进行一定转译,这种转译方式就是由描述符协议确定。借助Python提供给我们描述符协议,我们就可以用来以Python方式实现与私有变量类似的功能。...总结 本文总结了Python描述符相关概念和使用,描述符可以帮助我们实现强大而灵活属性管理,通过结合使用描述符可以实现优雅编程,但是同时也应该保持谨慎态度,避免由于覆盖普通对象行为而产生不必要代码复杂性

77790

Python进阶——什么是描述符

Python 开发中,你可能听说过「描述符」这个概念,由于我们很少直接使用它,所以大部分开发人员并不了解它原理。...但作为熟练使用 Python,想要进阶你,建议还是了解一下描述符原理,这也便于你更深层次地理解 Python 设计思想。...其实,我们也可以直接利用 Python 描述符特性来实现这些装饰器, property Python 版实现: class property: def __init__(self, fget...由此可见,通过描述符我们可以实现强大而灵活属性管理功能,对于一些要求属性控制比较复杂场景,我们可以选择用描述符来实现。 总结 这篇文章我们主要讲了 Python 描述符工作原理。...Python 描述符提供了强大属性访问控制功能,我们可以在需要对属性进行复杂控制场景中去使用它。

32330

关于 Python 描述符(Descriptor) 附实例

Python 众多原生特性中,描述符可能是最少被自定义实现特性之一,很多初学者都可能不知道它存在,但它在底层实现方法和属性却随处可见,它优雅实现方式充分体现出 Python 简洁之美。...当对一个实例属性进行访问时,Python 会按 obj.__dict__ → type(obj).__dict__ → type(obj)父类....__dict__ 顺序进行查找,如果查找到目标属性并发现是一个描述符Python 会调用描述符协议来改变默认控制行为。...特性 同时定义了 __get__ 和 __set__ 描述符称为 数据描述符(data descriptor);仅定义了 __get__ 称为 非数据描述符(non-data descriptor)...__dict__ 中有与描述符同名属性,若描述符是数据描述符,则优先调用描述符,若是非数据描述符,则优先使用 obj.__dict__ 中属性。

40820

Python描述符descriptor使用原理解析

描述符(descriptor)是实现了__get__、__set__、__del__方法类,进一步可以细分为两类: 数据描述符:实现了__get__和__set__ 非数据描述符:没有实现__set...__ 描述符在类属性调用中起着很重要作用,类在调用属性时,遵守两个规则: 按照实例属性、类属性顺序选择属性,即实例属性优先于类属性 如果在类属性中发现同名数据描述符,那么该描述符会优先于实例属性...属性是一个描述符,当value属性是一个数据描述符时,它屏蔽了实例同名属性value,实例对value属性读取与赋值都会直接被转移到类属性value上。...总结 描述符是实现了__get__、__set__、__del__等特殊方法类,在属性访问时起着很大作用。 数据描述符会覆盖同名实例属性,通过使用数据描述符,达到通过实例修改类变量目的。...描述符用于修改属性默认访问方式,借此可以实现类方法与静态方法。 以上就是本文全部内容,希望对大家学习有所帮助。

50751

Python学习之路40-属性描述符

大家好,又见面了,我是你们朋友全栈君。 《流畅Python》笔记。 本篇主要讨论Python描述符,它是精通Python关键。 1. 前言 描述符是对多个属性运用相同存取逻辑一种方式。...本篇内容包括:将上一篇中特性工厂函数改为描述符类;重构并派生描述符子类;覆盖型描述符和非覆盖型描述符;非覆盖型描述符典型代表:方法。 2...._Quantity#0直接访问在Python中是无效,因为注释也用是#号,然而内置getattr和setattr函数可以使用这种“无效”标识获取和设置属性,此外也可以直接处理实例属性__dict...覆盖型与非覆盖型描述符 Python存取属性方式并不是对等:通过实例读取属性时,通常返回是实例中定义属性,如果没有这个属性,再到所属类中去找;但为实例中属性赋值时,通常会在实例中创建属性,根本不影响类...这也是非覆盖型描述符一个具体类型,同时,这也说明了,Python语言底层就用到了描述符类。

36030

Python 描述符是什么?以及如何实现

被@property修饰成员函数,将变为一个描述符。这是最简单创建描述符方式。...此时可以给描述符一个简要定义: 描述符是类一个属性,控制类实例对象访问这个属性时如何返回值及做哪些额外操作 这留给程序员空间是巨大。。...描述符协议 任何实现了描述符协议类都可以作为描述符类。...None 否 __delete__(self, obj) 删除属性 None 否 如果一个类实现了以上成员函数,则它便是一个描述符类,其实例对象便是一个描述符 下面是一个自定义描述符实现。...参数意义 __get__(self, obj, type) 函数各个参数意义为: 参数 意义 例子中对应 self 描述符对象本身 Foo.attr obj 使用描述符对象实例 foo type

61230

python学习笔记6.5-类中描述符使用

之后,底层实例字典会根据需要适当进行调整。 要使用一个描述符,首先要创建一个描述符类,然后把描述符实例放在类定义中作为类变量来使用。...(这就是python描述符运行机制,不好理解,但一定要多读去记住,很快就会理解) 对于大多数python特性,描述符都提供了底层魔法,包括@classmethod、 @staticmethod...如果以类变量形式访问描述符,参数instance应该设为None。 这种情况下,标准做法就是简单返回描述符实例本身。...描述符常常作为一个组件出现在大型编程框架中,其中还会涉及装饰器或者元类。正因为如此,对于描述符使用可能隐藏很深,几乎看不到痕迹。...对于这样任务,使用@property函数更加简单。针对于大量重用代码情况下,使用描述符更加有用(例如,我们需要在自己代码中大量使用描述符提供功能,或者将其作为库来使用)

59490

几个小例子给你讲解Python中类描述符

学习 Python 这么久了,说起 Python 优雅之处,能让我脱口而出, Descriptor(描述符)特性可以排得上号。...描述符Python 语言独有的特性,它不仅在应用层使用,在语言基础设施中也有涉及。...也就体会不到 Python 给我们带来便利与优雅。 由于描述符内容较多,长篇大论,容易让你倦怠,所以我打算分几篇来讲。 今天的话题是:为何要使用描述符?...我建议你去了解一下 Python 描述符。 经过主管指点,你知道了「描述符」这个东西。怀着一颗敬畏之心,你去搜索了下关于描述符用法。 其实也很简单,一个实现了 描述符协议 类就是一个描述符。...以上,我举了下具体实例,从最原始编码风格到 Property ,最后引出描述符。由浅入深,一步一步带你感受到描述符优雅之处。

75720

文件描述符限制

文件描述符限制 文件描述符 Linux核心思想之一就是”一切皆文件”。...文件描述符(文件句柄)是Linux内核为了高效管理已被打开文件所创建索引,它是一个非负整数,用于指代被打开文件。文件打开后,所有对该文件操作都通过文件描述符进行操作。...文件描述符是系统重要资源,当打开过多文件时会出现把系统内存耗尽情况,所以Linux提供了多种维度对文件描述符使用上限进行限制,以避免该问题。...文件描述符限制 file-max file_max用于限制整个系统能够分配文件描述符,即当前系统下所有用户下所有进程,其分配所有文件描述符之和不能超过该值。...,第一个(6144)是系统已经分配文件描述符数;第二个(0)是系统已经分配但未使用文件描述符数;第三个是内核最大能分配文件描述符数,与file-max一致。

1.7K20
领券