装饰器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()`
上一篇下一篇

猜你喜欢

热点阅读