首页 > 编程语言 > 详细

python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

时间:2020-01-10 09:33:22      阅读:72      评论:0      收藏:0      [点我收藏+]

摘自:https://blog.csdn.net/gezailushang/article/details/84291092 

https://blog.csdn.net/xiemanr/article/details/72510885

 

一:函数装饰函数

  1. def wrapFun(func):
  2. def inner(a, b):
  3. print(‘function name:‘, func.__name__)
  4. r = func(a, b)
  5. return r
  6. return inner
  7. @wrapFun
  8. def myadd(a, b):
  9. return a + b
  10. print(myadd(2, 3))

二:函数装饰类

  1. def wrapClass(cls):
  2. def inner(a):
  3. print(‘class name:‘, cls.__name__)
  4. return cls(a)
  5. return inner
  6. @wrapClass
  7. class Foo():
  8. def __init__(self, a):
  9. self.a = a
  10. def fun(self):
  11. print(‘self.a =‘, self.a)
  12. m = Foo(‘xiemanR‘)
  13. m.fun()

三:类装饰函数

  1. class ShowFunName():
  2. def __init__(self, func):
  3. self._func = func
  4. def __call__(self, a):
  5. print(‘function name:‘, self._func.__name__)
  6. return self._func(a)
  7. @ShowFunName
  8. def Bar(a):
  9. return a
  10. print(Bar(‘xiemanR‘))

四:类装饰类

  1. class ShowClassName(object):
  2. def __init__(self, cls):
  3. self._cls = cls
  4. def __call__(self, a):
  5. print(‘class name:‘, self._cls.__name__)
  6. return self._cls(a)
  7. @ShowClassName
  8. class Foobar(object):
  9. def __init__(self, a):
  10. self.value = a
  11. def fun(self):
  12. print(self.value)
  13. a = Foobar(‘xiemanR‘)
  14. a.fun()

 

python装饰器的4种类型:函数装饰函数、函数装饰类、类装饰函数、类装饰类

原文:https://www.cnblogs.com/LiuYanYGZ/p/12174164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!