首页 > 解决方案 > 类点\继承 - 任务检查

问题描述

我正在尝试解决任务(下面的文本),但我对第二点有问题,即其中显示段长度以及起点和终点位置的方法。-我真的不知道怎么写,有人可以看一下代码并给出一些提示吗?

代码:

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

标签: pythonclassinheritancemath

解决方案


任务 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}"

推荐阅读