Python @函数装饰器

最近更新于 2024-05-05 14:19

自定义装饰器函数

示例:

def decorator(func):  # 装饰器函数
    def inner(num1, num2):  # 内部函数
        return func(num1, num2) ** 2  # 将函数的求和结果计算平方
    return inner  # 返回平方后的结果作为函数的实际返回值


@decorator  # 使用装饰器
def fun(num1, num2):
    sum = num1 + num2  # 求和
    return sum  # 求和结果会传给装饰器


print(fun(2, 4))  # 调用测试函数

函数 fun 本身只是计算传入的两个参数的求和,然后利用装饰器扩展功能,对求和后的数值再平方。我对装饰器的理解就是用来给函数扩展功能。

内置装饰器函数

1.静态方法:@staticmethod

对类中定义的函数进行修饰,可实现非实例化的情况下直接调用类中的函数。

class CC(object):
    @staticmethod
    def aa():
        print('静态方法')

    def bb(self):
        print('实例化调用')


CC.aa()  # 静态方法

cc = CC()  # 调用需要先实例化
cc.bb()

2.修饰函数无需实例化,不用 self 参数:@classmethod

class C(object):
    def aa(self):
        print('类方法')

    @classmethod
    def bb(d):  # 需要一个表示自身类的参数
        print('无需实例化的方法')
        d().aa()  # 调用自身类中的其他方法


C.bb()

3.可让方法像属性一样访问(只读):@property

class C(object):
    def __init__(self):
        self.__a = 9
        self.__b = 10

    @property
    def a(self):
        return self.__a

    @property
    def b(self):
        return self.__b


c = C()
print(c.a)  # 无需通过 c.a() 加括号的方式访问
print(c.b)

Python @函数装饰器
Scroll to top