装饰器4
2021-01-29 本文已影响0人
闲云野鹤_23dd
装饰器装饰类
使用类装饰器的时候,记得要返回被装饰的类调用的结果
装饰器函数 再 init 之前执行
例子1:
给类添加属性
def warp(obj):
obj.name = 'python'
return obj
@warp # => Bar = warp(Bar)
class Bar(object):
def __init__(self):
pass
print(Bar.name)
a = Bar()
print(a.name)
例子2:
初始化创建对象时添加额外操作
举例: 可以在创建对象时 验证属性数据
def f1(func):
def fun(*args, **kwargs):
print('-----执行装饰器实现的功能-------')
print(args)
return func(*args, **kwargs)
return fun
@f1
class Hero(object):
def __init__(self, name, age):
self.name = name
self.age = age
print('正在初始化')
def move(self):
print('%s在快速移动' % self.name)
laoli = Hero('大明', 19)
print(laoli.name)
laoli.move()`