Why can @decorator not decorate a staticmethod or a classmethod?

后端 未结 3 1647
萌比男神i
萌比男神i 2020-12-01 03:35

Why can decorator not decorate a staticmethod or a classmethod?

from decorator import decorator

@decorator
def print_function_name(function, *a         


        
3条回答
  •  粉色の甜心
    2020-12-01 04:00

    It works when @classmethod and @staticmethod are the top-most decorators:

    from decorator import decorator
    
    @decorator
    def print_function_name(function, *args):
        print '%s was called.' % function.func_name
        return function(*args)
    
    class My_class(object):
        @classmethod
        @print_function_name
        def get_dir(cls):
            return dir(cls)
        @staticmethod
        @print_function_name
        def get_a():
            return 'a'
    

提交回复
热议问题