用python3设计一个平面点类,拥有两个实例属性:横座标、纵座标;拥有一个特殊方法__ str __以及一个普通的实例方法:计算它与另一个平面点之间的距离。再由平面点类出发,以组合或继承的方式设计一个平面矩形类,拥有两个实例属性:某条对角线的两个端点;拥有二个普通的实例方法:计算周长、计算面积;别忘了实现它的_ str _方法。编写一些简单的测试代码。
时间: 2024-02-22 17:58:42 浏览: 69
下面是平面点类的实现:
```python
import math
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def distance(self, other):
return math.sqrt((self.x - other.x) ** 2 + (self.y - other.y) ** 2)
def __str__(self):
return f"({self.x}, {self.y})"
```
接下来是平面矩形类的实现,这里使用组合的方式:
```python
class Rectangle:
def __init__(self, point1, point2):
self.point1 = point1
self.point2 = point2
def length(self):
return abs(self.point1.x - self.point2.x)
def width(self):
return abs(self.point1.y - self.point2.y)
def perimeter(self):
return 2 * (self.length() + self.width())
def area(self):
return self.length() * self.width()
def __str__(self):
return f"({self.point1}, {self.point2})"
```
最后,我们可以编写一些测试代码:
```python
p1 = Point(1, 2)
p2 = Point(4, 6)
print(p1.distance(p2)) # 输出 5.0
print(p1) # 输出 (1, 2)
r = Rectangle(p1, p2)
print(r.length()) # 输出 3
print(r.width()) # 输出 4
print(r.perimeter()) # 输出 14
print(r.area()) # 输出 12
print(r) # 输出 ((1, 2), (4, 6))
```
这里我们创建了一个平面点对象 p1 和 p2,分别表示坐标为 (1, 2) 和 (4, 6) 的两个点。然后我们通过 p1 和 p2 创建了一个平面矩形对象 r,可以计算出它的周长和面积,并打印出它的字符串表示。
阅读全文