""" 实例方法和类方法的应用 Version: 0.1 Author: 骆昊 Date: 2018-03-12 """ from math import sqrt 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 c + a > b # 实例方法 def perimeter(self): return self._a + self._b + self._c # 实例方法 def area(self): p = self.perimeter() / 2 return sqrt(p * (p - self._a) * (p - self._b) * (p - self._c)) if __name__ == '__main__': # 用字符串的split方法将字符串拆分成一个列表 # 再通过map函数对列表中的每个字符串进行映射处理成小数 a, b, c = map(float, input('请输入三条边: ').split()) # 先判断给定长度的三条边能否构成三角形 # 如果能才创建三角形对象 if Triangle.is_valid(a, b, c): tri = Triangle(a, b, c) print('周长:', tri.perimeter()) print('面积:', tri.area()) # 如果传入对象作为方法参数也可以通过类调用实例方法 # print('周长:', Triangle.perimeter(tri)) # print('面积:', Triangle.area(tri)) # 看看下面的代码就知道其实二者本质上是一致的 # print(type(tri.perimeter)) # print(type(Triangle.perimeter)) else: print('不能构成三角形.')