1. 主页
  2. Python基础到高级
  3. 面向对象
  4. 类装饰器

类装饰器

类装饰器

类装饰器,顾名思义就是作用在类上面的装饰器,比函数装饰器要简单点。

给类动态添加属性的装饰器

def set_name(name):   # 定义一个给类添加NAME属性的装饰器,name是类的NAME属性的值
    def wrap(cls):   # cls是需要装饰的类
        cls.NAME = name   # 给类添加NAME属性
        return cls   # 返回这个类
    return wrap   # 装饰器

@set_name('test name F')  # 相当于一个有参数的装饰器
class F:
    pass

print(F.NAME)

返回结果:
>>> test name F

给类动态添加方法的装饰器

def print_name(cls):   # 定义一个装饰器
    def get_name(self):   # 定义一个带有self的函数,如果没有self参数,那么这个动态添加的方法就不能使用实例来访问了
        return cls.__name__   # 返回需要装饰器的装饰器的名字
    cls.__get_name__ = get_name   # 将get_name方法,传给cls类的__get_name__方法
    return cls

@print_name
class G:
    pass

g = G()

print(g.__get_name__())   # 直接使用__get_name__就可以访问了

返回结果
>>> G

类装饰器通常是用于给类添加属性用的,对于添加类方法的装饰器,是有更好的方法代替的

我们要如何帮助您?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注