装饰器就是用函数来包装函数,对内函数赋予一些我们所需要的功能,Python有三个内置的装饰器:staticmethod,classmethod和property,这三个装饰器都是和类相关的.
@staticmethond
一般情况,要使用类的方法,需要先实例化一个对象再调用方法,使用staticmethod(静态方法)之后,可以直接使用类来进行方法的访问,不需要事先进行实例化,这样做的好处就是可以将属于这个类的函数放到静态方法中
1 | class test(object): |
1 | A |
可以看出,使用静态方法装饰的方法,类可以直接访问,而没有被装饰的方法,类是无法访问的,并且装饰的方法是不用传入self的
@classmethod
类方法和静态方法很相似,区别在于静态方法装饰的方法是不需要传入self的,而类方法装饰的方法是需要传入一个隐式的对象作为参数,这个隐式的对象在有继承时表示相应的子类,在无继承时表示当前类
1 | class Parent(object): |
1 | Boy classSayHello |
可以看出这个隐式的类参数可以进行类的区分
@property
该装饰器可以将方法变成属性,在进行访问时就不能像访问方法那样进行访问,要用访问属性的方式进行访问
1 | class Student(object): |
使用property来装饰score时会自动创建一个新的setter装饰器,使用setter可以对属性进行赋值,这样做的话,对一个属性的查询和修改就会简单很多.