python之内置装饰器(property/staticmethod/classmethod)
Posted 水里的芋头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之内置装饰器(property/staticmethod/classmethod)相关的知识,希望对你有一定的参考价值。
python内置了property、staticmethod、classmethod三个装饰器,有时候我们也会用到,这里简单说明下
1、property
作用:顾名思义把函数装饰成属性
一般我们调用类方法成员,都是如下写法:
class propertyTest(): def __init__(self,x,y): self.x = x self.y = y def square(self): return self.x * self.y pt = propertyTest(3,5) print(pt.square())
这里一看square就是类的一个方法,但如果把他写成如下形式,那么就不确定调用的一定是类方法:
class propertyTest(): def __init__(self,x,y): self.x = x self.y = y @property def square(self): return self.x * self.y pt = propertyTest(3,5) print(pt.square)
这里调用方法类似调用了一个成员变量一样,如果写成print(pt.square())编译器会报错
这就是property的用法, 把一个方法变成一个变量来调用
2、staticmethod
作用:不需要实例化,直接可以调用类中的方法,如下所示
class A(): def __init__(self): pass @staticmethod def plus(x,y): print(x*y) c = A() c.plus(2,3) A.plus(4,5)
我们可以实例化类A,然后调用方法plus,也可以直接类.方法调用
3、classmethod
作用:和staticmethod类似,不同的是把调用的类作为第一个参数传入,如下:
class A(): def __init__(self): pass @classmethod def plus(cls,x,y): print(cls) print(x*y) A.plus(4,5) c = A() c.plus(5,6)
这里print(cls)打印的是类A,其他用法同staticmethod
以上是关于python之内置装饰器(property/staticmethod/classmethod)的主要内容,如果未能解决你的问题,请参考以下文章