设计一个表示三角形的不可变类型TriAngle,并实现
时间: 2024-03-19 19:45:57 浏览: 108
设计一个Triangle类
以下是一个表示三角形的不可变类型 TriAngle 的实现,其中包含边长和角度信息:
```python
from typing import Tuple
class TriAngle:
def __init__(self, side1: float, side2: float, side3: float) -> None:
self._side1 = side1
self._side2 = side2
self._side3 = side3
@property
def sides(self) -> Tuple[float, float, float]:
return (self._side1, self._side2, self._side3)
@property
def angles(self) -> Tuple[float, float, float]:
a, b, c = self._side1, self._side2, self._side3
A = math.degrees(math.acos((b**2 + c**2 - a**2) / (2 * b * c)))
B = math.degrees(math.acos((c**2 + a**2 - b**2) / (2 * c * a)))
C = 180 - A - B
return (A, B, C)
def __eq__(self, other: 'TriAngle') -> bool:
return sorted(self.sides) == sorted(other.sides) and sorted(self.angles) == sorted(other.angles)
def __str__(self) -> str:
return f"Triangle with sides {self.sides} and angles {self.angles}"
```
在上面的代码中,`TriAngle` 类的构造函数接受三个参数,分别表示三角形的三条边长。类还提供了两个属性:`sides` 和 `angles`,它们分别返回三角形的边长和角度。`angles` 属性使用余弦定理计算三个角度的大小。类还实现了 `__eq__` 方法,用于比较两个三角形是否相等。最后,类还实现了 `__str__` 方法,用于返回一个描述三角形的字符串。
阅读全文