标签:print pytho 其他 方法调用 test 简单 eth square ssm
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)
标签:print pytho 其他 方法调用 test 简单 eth square ssm
原文地址:https://www.cnblogs.com/watertaro/p/9419537.html