Python多重继承示例代码

import sys

# python----多个装饰器装饰一个函数
# 当多个装饰器装饰一个函数时,执行时的顺序是:最先装饰的装饰器,最后一个执行。它遵循了先进后出规则 类似于stack


def set_fun1(func):
    f_name = sys._getframe().f_code.co_name
    print(f"{f_name}() start!")  # 打印用于验证在多个装饰器的情况下,多个装饰器之间的执行顺序

    def call_fun1():
        print("call_fun1 start!")  # 当被装饰函数执行时,会打印
        return func()

    return call_fun1


def set_fun2(func):
    f_name = sys._getframe().f_code.co_name
    print(f"{f_name}() start!")

    def call_fun2():
        print("call_fun2 start!")
        return func()

    return call_fun2


# 装饰函数
@set_fun2
@set_fun1
def test():
    f_name = sys._getframe().f_code.co_name
    print(f"{f_name}() start!")


test()

# set_fun1() start!
# set_fun2() start!
# call_fun2 start!
# call_fun1 start!
# test() start!
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章