12. @property 装饰器
我们可以给计算三角形周长和面积的方法添加 @property 装饰器(Python 内置类型),这样 perimeter 和 area 就变成了两个属性,不再通过调用方法的方式来访问,而是用对象访问属性的方式直接获得。
python
class Triangle(object):
"""三角形"""
def __init__(self, a, b, c):
"""初始化方法"""
self.a = a
self.b = b
self.c = c
@staticmethod
def is_valid(a, b, c):
"""判断三条边长能否构成三角形(静态方法)"""
return a + b > c and b + c > a and a + c > b
@property
def perimeter(self):
"""计算周长"""
return self.a + self.b + self.c
@property
def area(self):
"""计算面积"""
p = self.perimeter / 2
return (p * (p - self.a) * (p - self.b) * (p - self.c)) ** 0.5
t = Triangle(3, 4, 5)
print(f'周长: {t.perimeter}')
print(f'面积: {t.area}')
▶ 运行结果:
输出
周长: 12
面积: 6.0