python-面向对象-类装饰器

版权声明:所有代码均为自己总结,若有雷同请勿模仿 https://blog.csdn.net/weixin_44253023/article/details/89851437
class Test(object):
    # 通过初始化方法,将要被装饰的函数传进来并记录下来
    def __init__(self, func):
        self.__func = func

    # 重写 __call__ 方法来实现具体装饰内容
    def __call__(self, *args, **kwargs):
        print('类的装饰器实现')
        return self.__func(*args, **kwargs)


def show():
    print('i am func show')


# 装饰前,show是一个函数
show()

# 装饰后,show变成了Test类的实例对象
test1 = Test(show)
test1()
# ------------------------------------------------------
# 执行效果
# 装饰前
# i am func show
# 装饰后
# 类的装饰器实现
# i am func show
_new__方法:实例化对象(开辟内存空间)
__init__方法:对实例化对象进行初始化操作
__call__方法:让类可调用,实现装饰器
__str__方法:当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str__方法,那么就会打印从在这个方法中return的数据
__del__方法:当删除对象时,python解释器会默认调用这个方法,让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)
--------------------- 

猜你喜欢

转载自blog.csdn.net/weixin_44253023/article/details/89851437
今日推荐