python - 类点\继承 - 任务检查
问题描述
我正在尝试解决任务(下面的文本),但我对第二点有问题,即其中显示段长度以及起点和终点位置的方法。-我真的不知道怎么写,有人可以看一下代码并给出一些提示吗?
- 使用 x、y 字段和显示点位置的方法定义一个 Point 类(例如“point (2,3)”)。
- 然后创建一个从类点继承的类 Segment。在其中创建一个方法,显示线段的长度以及起点和终点的位置。
- 然后定义将包含 3 个点的 Triangle 类,自动确定它们的 3 个部分(墙),并包含一个显示周边表面积的方法。
代码:
from math import sqrt, hypot
class Point:
def __init__(self, x_init, y_init):
self.x = x_init
self.y = y_init
def __str__(self):
return "Point(%s,%s)"%(self.x, self.y)
class Segment(Point):
def distance(self): **!-probably a badly written method**
return ((self.x ** 2) + (self.y ** 2)) ** 0.5
def position(self, p): **!-probably a badly written method**
dx = self.x - p.X
dy = self.y - p.Y
return hypot(dx, dy)
class Triangle(Point):
def __init__(self, x, y, z):
Point.__init__(self, x, y)
self.z = z
def __str__(self):
return "Point(x %s ,y %s, z %s )" % (self.x, self.y, self.z)
def __area__(a, b, c):
s = (a + b + c) / 2
return (s * (s - a) * (s - b) * (s - c)) ** 0.5
def __perimeter__(a, b, c):
s = (a + b + c)
return s
解决方案
任务 2 是错误的。Segment
需要包含 2 个点,所以它不能继承自Point
. 它应该是:
class Segment:
def __init__(self, start, end):
self.start = start
self.end = end
def distance(self):
dist = ((self.start.x - self.end.x) ** 2 + (self.start.y - self.end.y) ** 2) ** 0.5
print(f"distance from {self.start} to {self.end} is {dist}"
推荐阅读
- selenium - 日期从 Excel 到 Selenium WebDriver 时的格式问题
- data-structures - 帮助解决通用数组创建错误 (^ at new)
- node.js - 为什么在 nodeJS 项目上运行“npm start”不起作用,但在 ReactJS 上它可以工作
- android - 改造发送具有多个相同密钥的 json 请求
- node.js - NodeJS:promise 代替 async/await 工作
- excel - VBA 将第 1 列中的每一行与第 2 列中的每一行进行比较。如果行不匹配,则显示一个 msgbox
- php - Laravel:如何获取分配给特定代理的所有客户订单
- c - Valgrind:大小为4的无效读取,1个块中的8个字节肯定会丢失在C中的丢失记录中
- r - 使用 Plotly 的圆形等高线图
- visual-studio - 为什么在转到导航弹出窗口中看不到任何结果?