一.再看property                                                                          一个静态属性property本质就是实现了get,set,delete三种方法 class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') @AAA.deleter de…
描述符__get__,__set__,__delete__ 1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议__get__():调用一个属性时,触发__set__():为一个属性赋值时,触发__delete__():采用del删除属性时,触发 描述就是一个新式类,这个类至少要实现上述三个方法的一个 class 描述符: def __get__(): pass def __set__…
http://www.cnblogs.com/linhaifeng/articles/6204014.html#_label12 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议 __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 定义一个描述符 class Foo: #在python3中Foo是新…
先说定义,这里直接翻译官方英文文档: 一般来说,描述符是具有“绑定行为”的对象属性,该对象的属性访问将会被描述符协议中的方法覆盖.这些方法是__get__(),__set__(),和__delete__().如果一个对象定义了这些方法中的任何一个,它就是一个描述符. 接下来对这个定义进行解释: 我们访问一个对象a的属性x的时候,是这么调用的:a.x,那么这种方便的调用方式其实是怎么工作的呢? 首先,它会访问自己的实例名称空间: a.__dict__['x'] 如果没有,则会访问类及超类的名称空间…
描述符就是一个新式类,这个类至少要实现__get__ __set__ __delete__方法中的一种class Foo: def __get__(self, instance, owner): print('__get__') def __set__(self, instance, value): print('__set__') def __delete__(self, instance): print('__delete__') class fun: x = Foo() def __ini…
描述符__get__,__set__,__delete__ # 描述符:1用来代理另外一个类的属性 # __get__():调用一个属性时,触发 # __set__():为一个属性赋值时触发 # __delete__():采用del输出属性时,触发 # 定义一个描述符的格式,里面包括有__get__,__set__,__delete__方法,这样的一个类就被叫做描述符 # 该描述符的作用是为另外一个类的类属性进行服务,另外一个类就是描述符的对象 class Foo: def __get__(se…
在类中定义的函数属于绑定方法(bound method),因为用户定义的函数都有 __get__ 方法,所以依附到类上时,就相当于描述符.示例 20-13 演示了从 面向对象专题(九)示例 20-8 里定义的 Managed 类中读取 spam 方法.示例 20-13 方法是非覆盖型描述符 >>> obj = Managed() >>> obj.spam ➊ <bound method Managed.spam of <descriptorkinds.Man…
https://www.cnblogs.com/flashBoxer/p/9771797.html 实现了 __get__.__set__ 或 __delete__ 方法的类是描述符.描述符的用法是,创建一个实例,作为另一个类的类属性. 1 前言 描述符是对多个属性运用相同存取逻辑的一种方式.例如,DjangoORM 和 SQL Alchemy 等 ORM 中的字段类型是描述符,把数据库记录中字段里的数据与 Python 对象的属性对应起来. 描述符是实现了特定协议的类,这个协议包括 __get…
使用特性以保持简单 内置的 property 类创建的其实是覆盖型描述符,__set__ 方法和__get__ 方法都实现了,即便不定义设值方法也是如此. 特性的__set__ 方法默认抛出 AttributeError: can't set attribute,因此创建只读属性最简单的方式是使用特性,这能避免下一条所述的问题. 只读描述符必须有 __set__ 方法 如果使用描述符类实现只读属性,要记住,__get__ 和 __set__两个方法必须都定义,否则,实例的同名属性会遮盖描述符.…
前言 根据是否定义__set__ 方法,描述符可分为两大类. 实现 __set__ 方法的描述符属于覆盖型描述符,因为虽然描述符是类属性,但是实现 __set__ 方法的话,会覆盖对实例属性的赋值操作. 没有实现 __set__ 方法的描述符是非覆盖型描述符.如果设置了同名的实例属性,描述符会被遮盖,致使描述符无法处理那个实例的那个属性. 示例 20-8 descriptorkinds.py:几个简单的类,用于研究描述符的覆盖行为 ### 辅助函数,仅用于显示 ### def cls_name(…
目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象从属的类 Python中一切皆对象,类在某种意义上也是一个对象 Python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的 # type 获取对象从属于的类 print(type(A)) print(type(str)) print(type(dict)) type与ob…
目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生类,A类就称为父类,超类,基类 种类:单继承,多继承 面向对象的三大特征:继承,封装,多态 继承的优点: 减少重复的代码 增加类之间的耦合性(不宜多,宜精) 使代码更清晰,合理化 2. 单继承 定义:只有一个父类 执行父类的属性和方法: 1.类名执行父类的属性和方法 2.派生类对象执行父类的属性和方法 ​ 1.查询顺序:​ 单向不可…
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 1. 私有成员 2. 类方法 3. 静态方法 4. 属性 5. 内置函数 isinstance issubclass 6. 总结: 1. 私有成员 私有类的属性:在内部可以访问(本类内部方法中),类的外部不能访问 代码示例: # 在内部可以访问(本类内部方法中) class A: name…
https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向对象的结构 3. 从类名的角度研究类 3.1 类名操作类中的属性 3.2 类名调用类中的方法 4. 从对象的角度研究类 4.1 实例化一个对象发生的三件事 4.2 对象操作对象空间的属性 4.3 对象查看类中的属性 (注意:只能查看,不能更改) 4.4 对象查看类中的方法 5. se…
目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 2.try 6. 常见异常种类 1. 异常错误分类 语法错误 if 2 > 1 print(222) dic = {'name'; 'alex'} # 错误使用; tu = (2, 3, 4'' 6 ) # 错误使用'' 逻辑错误 num = int(input('请输入数字')) # 输入的不是数字的时候就会报错 dic = {'n…
https://www.cnblogs.com/liubing8/p/11321099.html 目录 Python面向对象04 /封装.多态.鸭子类型.类的约束.super 1. 封装 2. 多态 3. 鸭子类型 4. 类的约束 5. super的深度剖析 1. 封装 把一堆东西(代码,数据)放到一个地方(空间),并且可以使用,比如:函数,类 2. 多态 一个事物可以呈现多种形态 , 例如:水可以支持固态.液态.气态 Python默认支持多态(Java是强定义语言,Python是弱定义语言)…
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间的关系 3. 类与类之间的关系 1. 类的空间问题 添加对象属性 # 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 class Human: mind = '有思想的' def __init__(self, name, age): self.name…
1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),set(),delete()中的一个,这也被称为描述符协议 get():调用一个属性时,触发 set():为一个属性赋值时,触发 delete():采用del删除属性时,触发 class Foo: def __get__(self,instance,owner): print("=====>get方法") def __set__(self,instance,value): print(&qu…
字典的每个键值 key=>value 数据类型,字典的key是唯一的,Value可以一样 names={'玖乐公司网址':‘www.96net.com.cn’,"电池网":'www.dc3688.com'} 这里学习一下字典的删除方法 1,del 用法 del("玖乐公司网址") 2,pop() 用法 names.pop() 删除最后一个元素 3,popitem() 用法 names.popitem() 随机删除任何一个 4,clear() 用法 names.…
class Decorator(): def __init__(self, f): print('run in init......') self.f = f def __call__(self, a, b): self.f(a, b) @Decorator # add = Decorator(add) def add(a, b): print('a + b:', a+b) add(10, 20) 描述符: 3.__set__,__get__,__delete__都是啥 1).这3个特殊的函数说…
一 isinstance(obj,cls)和issubclass(sub,super) 1.1,isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo) #True 1.2,issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass issubcl…
目录: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__getattr__ 二次加工标准类型(包装) __getattribute__ 描述符(__get__,__set__,__delete__) property __setitem__,__getitem,__delitem__ __str__,__repr__,__format__ __slots__ __next__和__iter__实现迭代器…
一.反射 1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. 2 python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 导入其他模块,利用反…
一.描述符 在 面向对象 编程中 定义一个(没有定义方法)类:class person , 在这个类里面,有name,age, heigth, weight,等等属性, 这个类就可以看作一个对 person 的描述符,而具体的实例则是具体的“被描述物”. 而在python中,描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋…
1. __doc__ 表示类的描述信息 class Foo: """ 描述类信息""" def func(self): pass print (Foo.__doc__) #输出:类的描述信息 2. __module__ 和  __class__  __module__ 表示当前操作的对象在那个模块 __class__     表示当前操作的对象的类是什么 #!/usr/bin/env python # -*- coding:utf-8 -*- c…
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 6 isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的派生类 1 class Foo(object): 2 pass 3 4 class B…
一.什么是面向对象的程序设计 1.何为数据结构? 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,如列表.字典. 2.何为编程? 编程是指程序员用特定的语法+数据结构+算法,组成的代码,告诉计算机如何执行任务的过程. 3.何为编程范式? 实现一个任务的方式有很多种,对这些不同的编程方式的特点进行归纳总结得出的编程方式类别即为编程范式. 大多数语言只支持一种编程方式,也有些支持多种的. 两种最重要的编程范式:面向过程编程和面向对象编程. 4.面向过程编程(Procedural prog…
1.任何东西1)属性(特征:通常可以用数据来描述)(类变量和实例变量)2)可以做一些动作(方法) 类来管理对象的数据.属性:类变量和实例变量(私有变量)方法:    1)实例方法    2)类方法    3)静态方法   2.面向对象和函数管理数据:  类:有专有数据(可以存储,和对外使用)方法(用于操作专有数据的),实现操作数据的规则. 函数:无专有数据,谁给他传值都可以处理,并返回本身不能存储数据. class compute: #定义了类compute def __init__(self,…
A.python面向对象 1.面向对象基础:面向对象三个特性:封装,继承,多态C# java 只能用面向对象编程Ruby,python 函数+面向对象 函数式编程:def 函数def f1(a): return "f1"def f2(b): return "f2" f1("www")f2("aaa") 面向对象式编程,类,def 方法class Func: def f1(self,a): return "f1&quo…
1.类的比较 class A(object): def __init__(self,value): self.value = value def __eq__(self,other): return self.value == other.value def __ne__(self,other): return self.value != other.value def __gt__(self,other): return self.value > other.value def __lt__(…