Python:装饰器_高级用法_应用举例之打印用户权限

需求:
利用装饰器的高级用法,实现输入用户需求值user_permission,即打印该用户拥有哪些权限[读,写,执行,删除]
提示:运用按位与运算[&]实现

# 按位与,同为1则为1,有1的位置即代表有该权限
user_permission = 11 # 变量  1011
DEL_PERMISSION = 8  # 1011 & 1000 ==> 1000
READ_PERMISSION = 4 # 1011 & 0100 ==> 0000
WRITE_PERMISSION = 2  # 1011 & 0010 ==> 0010
EXECUTE_PERMISSION = 1  # 1011 & 0001 ==> 0001

def permission_test(x,y):
    def inner(fn):
        def inner_2():
            if x & y != 0: # 有权限,可以执行
                fn()
            else:
                print('没有相应的权限')
        return inner_2
    return inner

@permission_test(user_permission,DEL_PERMISSION)
def read():
    print('我有读的权限')

@permission_test(user_permission,READ_PERMISSION)
def write():
    print('我有写的权限')

@permission_test(user_permission,WRITE_PERMISSION)
def execute():
    print('我有执行的权限')

@permission_test(user_permission,EXECUTE_PERMISSION)
def delete():
    print('我有删除的权限')

delete()
read()
write()
execute()

猜你喜欢

转载自blog.csdn.net/weixin_42161670/article/details/113798156