自行定义一个Shape的子类三角形类Triangle,定义三条边,并覆盖Shape的三个方法,并增加各自的方法
时间: 2024-05-07 22:22:44 浏览: 84
以下是Triangle类的实现:
```python
class Triangle(Shape):
def __init__(self, a, b, c):
super().__init__()
self.a = a
self.b = b
self.c = c
def area(self):
s = (self.a + self.b + self.c) / 2
return (s * (s - self.a) * (s - self.b) * (s - self.c)) ** 0.5
def perimeter(self):
return self.a + self.b + self.c
def description(self):
return "This is a triangle with sides of length {}, {} and {}".format(self.a, self.b, self.c)
def is_right_triangle(self):
sides = [self.a, self.b, self.c]
sides.sort()
return (sides[0] ** 2 + sides[1] ** 2) == (sides[2] ** 2)
```
在这个实现中,我们覆盖了Shape类的三个方法:`area`、`perimeter`和`description`。我们还增加了一个新的方法`is_right_triangle`,用于判断三角形是否为直角三角形。
对于构造函数,我们传入三个参数a、b和c,代表三角形的三条边。在构造函数中,我们调用了父类Shape的构造函数。
`area`方法使用海伦公式计算三角形的面积。`perimeter`方法计算三角形的周长。`description`方法返回一个字符串,描述三角形的属性。
`is_right_triangle`方法判断三角形是否为直角三角形,通过判断三条边是否符合勾股定理来实现。
阅读全文