@property提供了比property()函数更简洁直观的写法。
被 @property 装饰的方法是获取属性值的方法,被装饰方法的名字会被用做属性名。
被 @属性名.setter 装饰的方法是设置属性值的方法。
被 @属性名.deleter 装饰的方法是删除属性值的方法。
@property是把函数方法包装成属性,可以按照属性的调用方法进行调用。
看一个例子,算圆面积
import math
class Area:
def circle_area(self,r):
c = math.pi * r ** 2
return c
area = Area()
circle_area = area.circle_area(5)
print(circle_area)
用@property装饰器来装饰
class Area:
@property
def circle_area(self):
c = math.pi * (self.r ** 2)
return f"面积是:{c}"
@circle_area.setter
def set_r(self,r):
if r > 0:
self.r = r
else:
print(‘输入有误‘)
@circle_area.getter
def circle_half(self):
c_half = 1/2 * math.pi * (self.r ** 2)
return f"半圆面积是{c_half}"
area = Area()
area.set_r = 5
print(area.circle_area)
print(area.circle_half)
这样做的好处是,可以对输入作出判断。
原文:https://www.cnblogs.com/lanhuakai/p/14647493.html