设计一个平面点类,拥有两个实例属性:横坐标、纵坐标;拥有一个特殊方法 str以及一个普通的实例方法:计算它与另一个平面点之间的距离。再由平面点类出发,以组合或继承的方式设计一个平面矩形类,拥有两个实例属性:某条对角线的两个端点;拥有二个普通的的实例方法:计算周长、计算面积;别忘了实现它的str 方法。编码一些简单的测试代码。
时间: 2024-02-12 07:07:00 浏览: 78
好的,我来为你解答这个问题。
首先,我们可以设计一个平面点类:
```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})"
```
在这个类中,我们定义了两个实例属性:横坐标和纵坐标。我们还定义了一个普通的实例方法,用于计算它与另一个平面点之间的距离。最后,我们还定义了一个特殊方法 str ,用于返回该点的字符串表示。
接下来,我们可以通过组合或继承的方式,设计一个平面矩形类:
```python
class Rectangle:
def __init__(self, p1, p2):
self.p1 = p1
self.p2 = p2
def perimeter(self):
width = abs(self.p2.x - self.p1.x)
height = abs(self.p2.y - self.p1.y)
return 2 * (width + height)
def area(self):
width = abs(self.p2.x - self.p1.x)
height = abs(self.p2.y - self.p1.y)
return width * height
def __str__(self):
return f"({self.p1}, {self.p2})"
```
在这个类中,我们定义了两个实例属性:某条对角线的两个端点。我们还定义了两个普通的实例方法,用于计算周长和面积。最后,我们也定义了一个特殊方法 str ,用于返回该矩形的字符串表示。
下面是一些简单的测试代码:
```python
p1 = Point(0, 0)
p2 = Point(3, 4)
print(p1.distance(p2)) # 输出 5.0
rect = Rectangle(p1, p2)
print(rect.perimeter()) # 输出 14
print(rect.area()) # 输出 12
print(rect) # 输出 ((0, 0), (3, 4))
```
这些代码创建了一个平面点和一个平面矩形,并测试了它们的距离、周长、面积和字符串表示。
阅读全文