装饰器功能
- 装饰器高价函数参数或者返回值为函数
- 装饰器用的闭包的功能
- 装饰器避免入侵式代码增强函数功能
- 需要带参数时需要进行柯里化
@property介绍
@property功能
主要功能:将方法装饰为属性一样使用,对象调用方法时,需要带(),对象调用属性时,直接使用属性名,因为方法本身就是函数,调用时必须用()
- 将一个类方法经过property装饰器函数装饰后,这个类方法当类对象属性使用
- 同时伴随着生成一个同名的name.setter装饰器,此装饰器是用来装饰新方法,对属性的修改
- @property 装饰的方法, @name.sette 装饰同一个方法名的方法
@类名.setter
- 如果一个属性方法被property装饰后,若再无.setter装饰此方法时,这个属性就变为只读属性
- .setter装饰后,就可以根据装饰器函数的要求进行更改控制其属性
简单案例
- propterty装饰操作自身属性的方法
- propterty装饰操作与自身属性无关的方法
- property装饰后,可以将属性变为只读属性
class Testcode:
"""no doc"""
def __init__(self,name):
self.name = name
self.__age = 12
#装饰方法,方法操作已有的属性
@property #通过装饰器将方法装饰为属性使用
def age(self):
return self.__age
# 由上装饰器生成age.setter装饰器,二者方法名的一致
@age.setter
def age(self,ae):
self.__age = ae
#装饰器仅仅将普通方法装饰为属性一样使用
@property
def printage(self):
print(self.__age)
def pi(self):
print(self.name)
Tom = Testcode("Tom bule")
#用装饰后的方法,当属性一样操作,但不会操作自身隐藏属性
Tom.age = 18
#装饰后的方法,使用时好像使用对象属性一样,不需要带()
Tom.printage
#普通方法,调用时使用()
Tom.pi()