1、无参数和带参数
def spamrun(fn): def sayspam(*args): print("spam,spam,spam") fn(*args) return sayspam @spamrun def useful(a,b): print(a*b) def attrs(**kwds): def decorate(f): for k in kwds: setattr(f, k, kwds[k]) return f return decorate @attrs(versionadded="2.2", author="Guido van Rossum") def mymethod(f): print(getattr(mymethod,'versionadded',0)) print(getattr(mymethod,'author',0)) print(f) if __name__=="__main__": #useful(2,5) mymethod(2)
https://blog.csdn.net/u013474436/article/details/75675113
2、
staticmethod 声明为静态方法
#!/usr/bin/python # -*- coding: UTF-8 -*- class C(object): @staticmethod def f(): print('runoob'); C.f(); # 静态方法无需实例化 cobj = C() cobj.f() # 也可以实例化后调用
https://www.runoob.com/python/python-func-staticmethod.html
3、
contextmanager 创建上下文 https://www.cnblogs.com/zhbzz2007/p/6158125.html标签:__,spam,python,mymethod,print,注解,def From: https://www.cnblogs.com/cnchengv/p/16898776.html