class TestClass(object):
    def __init__(self):
        self.fun = 0

    def decorator(self, fun):
        #通过fun变量实现对传入函数的回调
        self.fun = fun
        #仅注册回调函数，将原函数返回，不执行原函数工鞥呢，不改变原函数功能
        return fun

    def decorator1(self, type):
        def wrapper(func):
            if type == 'A':
                self.fun_A = func
            if type == 'B':
                self.fun_B = func
            return func
        return wrapper

test = TestClass()

#将decorator_test函数传入test的decorator函数，并执行decorator函数
@test.decorator
def decorator_test():
    print('this is decorator_test')

@test.decorator1('A')
def decorator_test():
    print('this is decorator_test A')

@test.decorator1('B')
def decorator_test():
    print('this is decorator_test B')

#通过test的fun变量回调decorator_test函数
test.fun();

test.fun_A ();
test.fun_B ();
