最近更新于 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 @函数装饰器