内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些。
Python内置有三大装饰器:@staticmethod(静态方法)、@classmethod(类方法)、@property(描述符),其中静态方法就是定义在类里的函数,并没有非要定义的必要;类方法则是在调用类属性、传递类对象时使用;而@property则是一个非常好用的语法糖。@property最大的好处就是在类中把一个方法变成属性调用,起到既能检查属性,还能用属性的方式来访问该属性的作用。
1.@property
@property可定义只读属性,也就是真正意义上的私有属性。@property真正强大的是可以限制属性的定义。
属性有三个装饰器:setter
, getter
, deleter
,都是在property()的基础上做了一些封装,因为setter
和deleter
是property()的第二和第三个参数,不能直接套用@语法。getter
装饰器和不带getter
的属性装饰器效果是一样的,估计只是为了凑数,本身没有任何存在的意义。经过@property装饰过的函数返回的不再是一个函数,而是一个property对象。
class People(object):
def __init__(self, name, age):
self.name = name
self.age = age
#