元类及迭代器生成器
- __getattr__和__getattribute__魔法方法
- getattribute 是一个优先级更高的魔法方法
- 属性描述符
- 介绍
- 协议:数据属性描述符(_get_, _set_); 非数据属性描述符(_get_)
- 使用类方法创建描述符
- 使用属性类型创建描述符
元类metaclass
- 元类实际上就是创建类的类;
- type()创建元类
- 第一个参数:name表示类名称;
- 第二个参数:bases表示继承对象父类,用元组类型表示(元组单元素使用逗号)
- 第三个参数:attr表示属性,这里可以填写类属性,类方法、静态方法等,采用字典格式,key为属性名,value为属性值。
迭代器
- 可迭代对象:
可以用for循环遍历的对象都是可迭代对象。- str,list,tuple,dict,set等都是可迭代对象;
- generator,包括生成器
- 判断是否可迭代 __iter__
- 迭代器
- 可迭代对象与迭代器的区别
生成器
- python中一边循环一边计算的机制,称为生成器。
- 为什么要有生成器?
- 如何创建生成器
列表推导式
元组推导式生成器表达式
(i for i in range(100))
yield ###