装饰器。。。理解还是有点模糊。摸透了再补充
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)
执行结果为
张三 读代码
李四 写代码
王五 无权限
王五 执行代码