一、对面向对象三大特性的理解
面向对象是目前存在的一种流行的编程思想,是以类的眼光来看待事物的方式
继承:将多个类的共同属性和方法封装到一个类下面,称其为父类,然后再用这些类(子类)来继承父类的属性和方法
封装:将有共同的属性和方法封装到同一个类下面,将绝大部分的属性于方法实现隐藏起来,只流出一部分的调用接口,即知道作用直接调用使用,而不需注意具体的的实现。
多态:除了熟知的Java外Python本来就是支持多态的。指的是基类的同一个方法在不同的派生类中有着不同的功能
二、python面向对象中的继承有什么特点?
继承实现的方式有两类:第一种实现继承,第二种接口继承
实现继承:即直接继承使用父类的方法与属性成员,无需额外编码,直接继承用即可。
接口继承:指只使用父类的属性与方法名,子类继承父类后需要重写父类方法
三、闭包的理解
def test():
A = 3
B = 4
def stu():
C = 3
return A+B+C
return stu
stu = test()
stu
在上述此代码中stu方法定义在test的内部,内部函数stu即可以使用外部函数test的变量,我们称这种行为叫做闭包
四、什么是装饰器
装饰器:能够在不修改原函数代码的基础上,在函数执行前后进行一些定制的操作,实际是闭包函数的一种应用场景
# 手写装饰器;
import functools
def wrapper(func):
@functools.wraps(func) #不改变原函数属性
def inner(*args, **kwargs):
执行函数前
return func(*args, **kwargs)
执行函数后
return inner
- 执行wapper函数,并将被装饰的函数当做参数。wapper(index)
- 将第一步的返回值,重新赋值给 新index = wapper(老index)
五、装饰器器的写法以及应用场景
装饰器本身就是一个函数,只是为了给其他函数增添执行方法(即其他功能)
使用装饰器原则: 不去修改被修饰函数的本省的代码,不修改被修饰函数自己的调用方式
应用场景: 无参装饰器在用户登录 认证中常见,有参装饰器在flask的路由系统中见到过
import functools
def wrapper(func):
@functools.wraps(func)
def inner(*args, **kwargs):
print('我是装饰器')
return func
return inner
@wrapper
def index():
print('我是被装饰函数')
return None
index()