python 装饰器学习 校验权限

装饰器。。。理解还是有点模糊。摸透了再补充

class Person():

    def __init__(self, name, quan):
        self.name = name
        self.quan = quan
        # 设置一个类表示个人, 有姓名 权限 两个属性
设定 读权限 1 写权限 2 执行权限4
三层 最外层设置该操作所需权限码 中间层传入要装饰的函数 最内层传入函数所需参数 在内层进行校验
def jiaoYan(num):
    def setQuan(func):
        def inner(person):
            if num & person.quan == num:    # 当校验通过 可以执行该操作
                func(person)
            else:
                print(person.name, "无权限")
        return inner
    return setQuan

@jiaoYan(1)
def read(person):
    print(person.name, "读代码")

@jiaoYan(2)
def write(person):
    print(person.name, "写代码")

@jiaoYan(4)
def run(person):
    print(person.name, "执行代码")


p1 = Person("张三", 1)    # 只有读权限
p2 = Person("李四", 3)    # 读写权限
p3 = Person("王五", 6)    # 写与执行权限
read(p1)
write(p2)
read(p3)
run(p3)

执行结果为

张三 读代码
李四 写代码
王五 无权限
王五 执行代码
发布了59 篇原创文章 · 获赞 11 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/dandanfengyun/article/details/104113075