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

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

1.函数装饰函数

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.函数装饰类

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.类装饰函数

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.类装饰类

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()
相关文章
|
4天前
|
开发者 Python
Python进阶:深入剖析闭包与装饰器的应用与技巧
Python进阶:深入剖析闭包与装饰器的应用与技巧
|
4天前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
4天前
|
Python
Python深入讲解系列之装饰器
Python深入讲解系列之装饰器
10 1
|
16小时前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
7 0
|
2天前
|
机器学习/深度学习 人工智能 程序员
探索Python宝库:从基础到技能的干货知识(数据类型与变量+ 条件与循环+函数与模块+文件+异常+OOP)
探索Python宝库:从基础到技能的干货知识(数据类型与变量+ 条件与循环+函数与模块+文件+异常+OOP)
3 0
|
4天前
|
Python
经验大分享:python类函数,实例函数,静态函数
经验大分享:python类函数,实例函数,静态函数
|
4天前
|
Python
|
4天前
|
Python
经验大分享:Python函数返回值
经验大分享:Python函数返回值
|
4天前
|
缓存 测试技术 Python
Python的装饰器详细讲解
Python的装饰器详细讲解
|
Python
关于PYTHON的反射,装饰的练习
从基本概念,简单例子才能慢慢走到高级一点的地方。 另外,PYTHON的函数式编程也是我很感兴趣的一点。 总体而言,我觉得OOP可以作大的框架和思路,FP能作细节实现时的优雅牛X。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~“自省”应该是原本的概念,特指在运行时获得object自身信息,这一能力“反射”是自省的一种实现方式,是具体的。
1013 0