百万年薪python之路 -- 装饰器进阶
2024-09-01 12:14:59
本文链接:https://blog.csdn.net/xiemanR/article/details/72510885
一:函数装饰函数
def wrapFun(func):
def inner(a, b):
print('function name:', func.__name__)
r = func(a, b)
return r
return inner
@wrapFun
def myadd(a, b):
return a + b
print(myadd(2, 3))
二:函数装饰类
def wrapClass(cls):
def inner(a):
print('class name:', cls.__name__)
return cls(a)
return inner
@wrapClass
class Foo():
def __init__(self, a):
self.a = a
def fun(self):
print('self.a =', self.a)
m = Foo('xiemanR')
m.fun()
三:类装饰函数
class ShowFunName():
def __init__(self, func):
self._func = func
def __call__(self, a):
print('function name:', self._func.__name__)
return self._func(a)
@ShowFunName
def Bar(a):
return a
print(Bar('xiemanR'))
四:类装饰类
class ShowClassName(object):
def __init__(self, cls):
self._cls = cls
def __call__(self, a):
print('class name:', self._cls.__name__)
return self._cls(a)
@ShowClassName
class Foobar(object):
def __init__(self, a):
self.value = a
def fun(self):
print(self.value)
a = Foobar('xiemanR')
a.fun()
更加详细补充: https://blog.csdn.net/five3/article/details/83447467
最新文章
- 调用altera IP核的仿真流程—上
- CI,从数据库读取数据
- 20个基于 WordPress 搭建的精美网站
- 细说HTTP上篇
- 20151210001 DataGridView 选中与被选中
- 正确使用HTML title属性
- “父窗口拖动的时候Popup不随着父窗口移动”问题的解决方案
- 搭建splinter+python环境时遇到的错误
- base64自定义编码表 php版本
- HBase集群安装部署
- Educational Codeforces Round 2_B. Queries about less or equal elements
- nodejs书籍
- 微信支付遇到的坑---缺少参数total_fee
- static关键字的用法
- nginx+supervisor+gunicorn+flask
- Struts2网页面传值两种方式
- (转+整理)C#中使用GUID
- fetch获取json的正确姿势
- CentOS7系统下YUM安装安装Mongodb 3.4
- AltiumDesigner元器件搜索中英文对照