python 类的内置方法二

来源:互联网 发布:解锁姿势体验知乎 编辑:程序博客网 时间:2024/06/06 02:50

1.描述符

1.描述符就是将某种特殊类型的类的实例指派给另一个类的属性,特殊类型的类即实现下面某个或者全部的方法
- 访问属性 __get__(self,instance,owner)返回属性的值
- 分配属性时调用 __set__(self,instance,value)无返回值
- 删除时 __delete__(self,instance) 无返回值

class A:    def __get__(self,instance,owner):        print('__get__', instance, owner)    def __set__(self,instance,value):        print('__set__', instance, value)    def __delete__(self,instance):        print('__delete__', instance)class Test:    x = A()t = Test()t.x # __get__ <__main__.Test object at 0x000002B03BE9A550> <class '__main__.Test'>print(t) # <__main__.Test object at 0x000002785C3FA550>print(Test) # <class '__main__.Test'>t.x = 20 # __set__ <__main__.Test object at 0x000002785C3FA550> 20del t.x # __delete__ <__main__.Test object at 0x0000024B0EC0A550>

2.描述符与property(property()函数就是描述符类)

class MyProperty:    def __init__(self,fget = None,fset = None,fdel = None):        self.fget = fget        self.fset = fset        self.fdel = fdel    def __get__(self,instance,owner):        return self.fget(instance)    def __set__(self,instance,value):        self.fset(instance,value)    def __delete__(self,instance):        self.fdel(instance)class A:    def __init__(self):        self.num = None    def getNum(self):        return self.num    def setNum(self, value):        self.num = value    def delNum(self):        del self.num    x = MyProperty(getNum,setNum,delNum) # 与property类似a = A()a.x = 20print(a.x) # 20print(a.num) # 20del a.num

3.列表生成式

可用range(1,n)生成[1,2,3….n]的列表

>>> list(x * x for x in range(1,11))[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

4.迭代

通过for循环称为迭代

a = {"语文":90,"数学":100,"python":100}for k,v in a.items():    print("%s-->%d" %(k, v))--------------语文-->90数学-->100python-->100

1.Iterable判断对象是否可迭代对象

from collections import Iterablea = {"语文":90,"数学":100,"python":100}flag = isinstance(a,Iterable)print("对象是否可迭代:" , flag) # True

5.生成器generator

可以通过列表生成式生成列表,也可通过生成器generator一边循环一边计算的机制生成列表

a = (x * x for x in range(1,11))print(a) # a为生成器print(next(a))print(next(a))next(a)没有下一个元素会抛出StopIteration异常------------------b = (x * x for x in range(1,11))for item in b:    print(item)

1.yield语句

遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
方法中出现yield则说明这个函数不是普通函数而是一个generator
yield 返回后面的值相当于return

def fun():    print('one print')    yield 111    print('two print')    yield 222    print('three print')    yield 333f = fun()for item in f:    print('item的值为%d' % item)-----------one printitem的值为111 two printitem的值为222three printitem的值为333
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手指骨节肿大怎么办 骨头脆怎么办 试胆大会怎么办 唱歌找不到调怎么办 家庭压力太大怎么办 心里有病怎么办 老公抑郁症 怎么办 婴儿容易被吓着怎么办 宝宝容易被吓到怎么办 婴儿老是被吓到怎么办 疤痕越长越大怎么办 痔疮越长越大怎么办 整天疑神疑鬼的怎么办 老是怀疑自己怎么办 吓到了怎么办 耳朵里爬进虫子怎么办 小学生沉迷游戏怎么办 电视频脏了怎么办 抖音被禁了怎么办 被禁驾了怎么办 床榻了怎么办 基础代谢高怎么办 wps卡死没响应怎么办 ppt不能修改怎么办 qq绑不上微信怎么办 眼带很大怎么办 头发枯草一样怎么办 手机屏幕弯了怎么办 荣耀外屏碎了怎么办 怎么办华西金卡 直肠癌术后疼痛怎么办 外地人怎么办京医通 儿童支原体感染怎么办 毛囊坏死怎么办 技校挂科怎么办 ios11指纹失灵怎么办 秒借还不了款怎么办 快递拒签后怎么办 小孩超市偷东西怎么办 二建锁丢失了怎么办 图纸看不懂怎么办