作者:Kevin
来源:麦叔编程
@property
@property装饰器可以把类中的实例方法转成一个“值”,上代码:
class Circle: def __init__(self, dia): self.dia = dia
@property def area(self):
a = (self.dia**2)*3.14 return a
c = Circle(4)
print("面积:",c.area) # 这里的area方法可以不用带()了
运行代码后:
> 面积:50.24
用了@property装饰器,最大的感受就是与常规的实例方法相比少了“()”也能调用了,这样让这个方法看上去更像一个“值”。
@staticmethod
上文算面积的方式有点麻烦,还要实例化类。能不能有一种即调即用的方式?
那就可以拿出@staticmethod装饰器,「带上这个装饰器的方法可以不实例化就能用」。
因为不需要将类实例化就能调用,所以构造方法中的实例属性都是不能拿来用的,所以参数里也没有self关键字。
class Circle: @staticmethod def area(dia): # 没有self关键字,但是需要传入参数 a = (dia**2)*3.14 return a
a = Circle.area(4) # 无需实例化,直接从类里调 print("面积:",a)
运行代码后:
> 面积:50.24