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)

执行结果为

张三 读代码
李四 写代码
王五 无权限
王五 执行代码
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值