python内置装饰器property_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值