Python3笔记042 - 7.8 装饰器
第7章 面向对象程序设计
- 7.1 面向对象概述
- 7.2 类的定义
- 7.3 类的实例化
- 7.4 访问限制
- 7.5 继承
- 7.6 封装
- 7.7 多态
- 7.8 装饰器
- 7.9 特殊方法
7.8 装饰器
Python的类装饰器:
# 典型场景:进行业务操作前需要先登录成功
def login(cls):
print("登录成功")
return cls
@login
class Model(object):
def __init__(self):
print("model has created")
if __name__ == '__main__':
model = Model()
login即是装饰器函数,输入的cls
是一个类,返回也是一个类。所以其实上文的类装饰器就相当于:Model = login(Model)
继承
'''
对于继承关系,若f装饰了类A,类B继承了A,则产生B的对象时仍然会调用装饰器f,但装饰器f只会修饰类A。
'''
def decorator(num):
print(num)
def dec2(cls):
print(cls)
return cls
return dec2
def decorator2(cls):
print(cls)
return cls
@decorator(1)
class Model(object):
test_val = 0
def __init__(self):
pass
@decorator2
class SubModel(Model):
def __init__(self):
pass
if __name__ == '__main__':
model = SubModel()
output:
1
<class '__main__.Model'>
<class '__main__.SubModel'>
敬请关注个人微信公众号:测试工匠麻辣烫