首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python装饰器中的4种类型(函数装饰函数、函数装饰类、类装饰函数、类装饰类)

python装饰器中的4种类型(函数装饰函数、函数装饰类、类装饰函数、类装饰类)

原创
作者头像
Python学习者
发布2023-07-08 15:10:42
发布2023-07-08 15:10:42
1.6K0
举报
文章被收录于专栏:Python学习者Python学习者

1.函数装饰函数

代码语言:python
复制
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))

2.函数装饰类

代码语言:python
复制
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()

3.类装饰函数

代码语言:python
复制
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'))

4.类装饰类

代码语言:python
复制
class ShowClassName(object):
    def __init__(self, cls):
        self._cls = cls
 
    def __call__(self, a):
        print('class name:', self._cls.__name__)
        return self._cls(a)
 
#Python小白学习交流群:711312441 
@ShowClassName
class Foobar(object):
    def __init__(self, a):
        self.value = a
 
    def fun(self):
        print(self.value)
 
a = Foobar('xiemanR')
a.fun()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.函数装饰函数
  • 2.函数装饰类
  • 3.类装饰函数
  • 4.类装饰类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档