Python:装饰器之有参装饰器
Posted 白鹭洲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:装饰器之有参装饰器相关的知识,希望对你有一定的参考价值。
from inspect import signature def f(a,b,c=1):pass sig = signature(f) sig.parameters 实现一个对被装饰的函数的参数类型检查的装饰器
from inspect import signature def typeassert(*ty_args,**ty_kargs): def decorator(func): #func ->a,b #d = {‘a‘:int,‘b‘:str} sig = signature(func) btypes = sig.bind_partial(*ty_args,**ty_kargs).arguments def wrapper(*args,**kargs): #arg in d,instance(arg,d[arg]) for name, obj in sig.bind(*ty_args,**ty_kargs).arguments: if name in btypes: if not instance(obj,btyes[name]): raise TypeError(‘"%s" must be "%s"‘ %(name,btyes[name])) return func(*args,**kargs) return wrapper return decorator @typeassert(int,str,list)
以上是关于Python:装饰器之有参装饰器的主要内容,如果未能解决你的问题,请参考以下文章
python进阶之装饰器之2.定义一个可接受参数的装饰器如何定义一个属性可由用户修改的装饰器定义一个能接受可选参数的装饰器