可迭代 >迭代器> 生成器
可迭代:实现的python的迭代协议,可以通过 for in循环遍历的对象,比如list dict 等内置数据类型,可以实现python的_iter()方法
迭代器:可以实现python中的——iter() _next()等方法,只能往前,不能 往后
生成器:通过yield来实现生成器,生成器也是只能往前不能往后
迭代器 和生成器都可以调用_next()方法
可迭代的对象(包含生成器),均可以通过iter(obj)转化成迭代器
封装 继承 多态
优先使用组合
继承容易使代码冗余
区分类变量和实例变量
类变量由所有实例共享
实例变量只能由实例单独共同享有,不能实例之间不会相互影响
当我们需要在一个类的不同实例之间共享变量的时候使用类变量
classmethod/staticmethod,实例方法 区别
(类方法和静态方法)
实例方法:只能用实例对象调用
类方法:使用装饰器@classmethod ,第一个参数必须是当前类对象,一般约定‘cls,通过它来实现类的属性和方法的调用
类和实例对象都可以调用
静态方法:使用装饰器@staticmethod,参数随意,没有’self'和‘cls’参数,方法体中不能使用类和实例的任何属性和方法
调用:类和实例对象都可以调用
装饰器
记录日志,
装饰器是接受函数作为参数,添加功能后返回一个新函数的函数(类)
类做装饰器的时候需要继承一下__call__
可以在装饰器上添加参数,只不过需要在类中添加__init__初始化
什么是元类?使用场景
适用于框架
元类是创建类的类
用type定义(类的属性保存在字典当中)
常见的设计模式
创建型模式,结构型模式 行为型模式
单例:一个类只能创建同一个对象,python的模块都是单例模式
工厂:
对象池模式
工厂模式:
解决对象创建问题
解耦对象的创建与应用
结构型模式:
装饰器模式
代理模式
适配器模式:给不同的悐统一接口的时候
MVC:
行为模式
迭代器模式:for 循环,可以实现_next_ 和_iter_的是迭代器
观察者模式:
策略模式
什么是闭包
引用了外部自由变量的函数
自由变量;不在当前函数定义的变量
特性:自由变量会和闭包函数同时存在