zoukankan      html  css  js  c++  java
  • pytho装饰器参数那些事_inspect.getcallargs

    '''
    Created on Jul 26, 2019
    
    @author: tomcat
    '''
    
    import inspect
    def chack_admin(func):
        def wrapper(*args,**kwargs):
            '''
            inspect.getcallargs 返回一个字典,字典里保存了函数所有的参数
            inspect.getcallargs(func[, *args][, **kwds]):将args和kwds参数到绑定到为func的参数名;对bound方法,也绑定第一个参数(通常为self)到相应的实例;返回字典,对应参数名及其值;
            '''
            fuc_args=inspect.getcallargs(func,*args,**kwargs)
            print("arg{},keord{},fuc_args{}".format(args, kwargs,fuc_args))
            if fuc_args.get("username") =="admin":
                re=func(*args,**kwargs)
            else:
                raise Exception('没有资格添加或删除元素')
            return re
        return wrapper
    class MyClass(object):
        def __init__(self):
            self.item=[90.89]
        '''
         如果username!=admin,没有资格添加一个元素
        '''
        @chack_admin
        def push(self,username,item):
            self.item.append(item)
        '''
        如果username!=admin,没有资格删除一个元素
        '''
        @chack_admin   
        def pop(self,username):
            if self.item:
                return self.item.pop()
            else:
                raise Exception('item 中没有元素')
    if __name__ == '__main__':
        m=MyClass()
        m.push('admin',10)
        m.push(username="admin",item=902)
        m.pop(username='admin')
        print(m.item)
    

    arg(<__main__.MyClass object at 0x10c5b5240>, 'admin', 10),keord{},fuc_args{'self': <__main__.MyClass object at 0x10c5b5240>, 'username': 'admin', 'item': 10}

    arg(<__main__.MyClass object at 0x10c5b5240>,),keord{'username': 'admin', 'item': 902},fuc_args{'self': <__main__.MyClass object at 0x10c5b5240>, 'username': 'admin', 'item': 902}

    arg(<__main__.MyClass object at 0x10c5b5240>,),keord{'username': 'admin'},fuc_args{'self': <__main__.MyClass object at 0x10c5b5240>, 'username': 'admin'}

    [90.89, 10]

  • 相关阅读:
    input的button和submit的区别
    2016011993 顾思宇 散列函数的应用及其安全性
    结对项目作业报告——四则运算web项目
    读《构建之法》4、17章有感
    2016011993+小学四则运算练习软件项目报告
    读《构建之法》1、2、16章有感
    码出生活
    四则运算
    信息安全作业
    结对项目博客
  • 原文地址:https://www.cnblogs.com/tallme/p/11247899.html
Copyright © 2011-2022 走看看