使用场景:
修饰方法,使得方法可以像属性一样访问。比如说,访问时原来要.XXX(),现在就可以直接变成.XXX。这样同时能确保模型真正的属性不会被外界访问和篡改。
类似于对 property() 但增加了缓存功能。对于在其他情况下实际不可变的高计算资源消耗的实例特征属性来说该函数非常有用。
使用场景:
与@property搭配使用,使得getter/setter函数可以在外部直接以=赋值的形式调用。
使用场景:
其修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
使用场景:
返回函数的静态方法,第一个参数不需要传入cls或self,故无法访问类和对象。
使用场景:
所在的 class 继承 abc.ABC,这个 class 就变成了抽象类, 不能被直接实例化, 要想使用抽象类, 必须继承该类并实现该类的所有抽象方法。
使用场景:
用它修饰的类是一个数据类,会自动给类添加初始化__init__、__eq__等函数。
使用场景:
该装饰器将一个函数中yield语句之前的代码当做__enter__方法执行,yield语句之后的代码当做__exit__方法执行。同时yield返回值赋值给as后的变量,构造一个上下文管理器。
使用场景:
不改变使用装饰器原有函数的结构(如name, doc)