【问题标题】:Super and Subclasses [closed]超类和子类[关闭]
【发布时间】:2015-12-01 20:58:50
【问题描述】:

我接到了一项任务,要求我们处理三个单独的课程:PointRectangleCanvas。我只是想知道是否有人可以帮助我大致了解他们应该如何互动。编程语言是 Python 3

以下是预期的输出:

>>>r1=Rectangle(Point(), Point(1,1), "red")
>>>r1
Rectangle(Point(0,0),Point(1,1),'red')

另一个例子是:

>>> r3=Rectangle(Point(), Point(2,1), "red")
>>> r3.get_perimeter()
6

【问题讨论】:

  • 这是什么语言?蟒蛇?
  • 是的,我应该加上那个!
  • Point 听起来像Rectangle 吗? Canvas 听起来像Point 吗?这些事情中的任何一个看起来是否会被明智地实施为其他事物中的一种特殊类型?不?那么它们之间不应该有任何超类/子类关系。
  • @user2357112,这是有道理的,那么就不需要子类了吗?例如,python 如何理解 point(1,1) 然后将其作为参数实现为矩形?
  • @MatteoColombi 子类是“是”关系。客户人。 Arm 是一个 BodyPart。点是矩形还是画布,或者两者都不是?重复画布和矩形

标签: python subclass superclass


【解决方案1】:

如果你问自己:A 类型的对象需要定义什么?

Rectangle 的一种可能实现是通过两个对角定义矩形,它们是平面中的点,可以是 Point 类型。 Point 本身,可以表示为一对数字。显而易见的定义现在是

class Point():
    def __init__(self, x, y):
        self.xCoordinate = x
        self.yCoordinate = y



class Rectangle():
    def __init__(self, southwest, northeast, colour):
        self.bottomLeftCorner = southwest
        self.upperRightCorner = northeast
        self.fill = colour

你可以定义

rect = Rectangle(Point(0,1), Point(4,212), "red")

按照上面的定义,要定义Rectangle,需要两个Point对象和一个String。不涉及超类/子类关系。

由于您没有提供任何Canvas 的示例,我无法为您提供更多帮助,但我认为您可以自己完成。

【讨论】:

  • 非常感谢!我已经开始按照你的方式做一些事情,所以至少现在我知道我在正确的轨道上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
  • 2014-03-23
  • 1970-01-01
  • 2012-07-05
  • 2017-04-19
相关资源
最近更新 更多