Python编程 - 定义一个类

时间:2014-09-07 08:49:33

标签: python class inheritance

这是问题,

定义类Rectangle。它的构造函数采用一对代表左上角的数字,以及另外两个代表宽度和高度的数字。它有以下方法:

get_bottom_right() - 将右下角作为一对数字返回。  move(p) - 移动矩形,使p成为左上角(保持宽度和高度不变)。 resize(width,height) - 将矩形的宽度和高度设置为提供的参数(保持左上角不变)。  __str__() - 将矩形的字符串表示形式返回为一对 - 即左上角和右下角。

注意:与您之前可能遇到的坐标系统不同,在此问题中,y会随着您向下垂直移动而增加。

实施例: 下面的每个例子都是从前一个例子开始的。 小心为str得到正确的间距 - 即逗号后跟空格。

r = Rectangle((2,3), 5, 7)

str(r)

*'((2, 3), (7, 10))'*

r.move((5,6))

str(r)

'((5, 6), (10, 13))'

r.resize(2,3)

str(r)

*'((5,6), (7, 9))'*

r.get_bottom_right()

*(7, 9)*

这是我的回答:

class Rectangle():

   def __init__(self, coords, sizex, sizey):
       self._startx, self._starty = coords
       self._sizex = sizex
       self._sizey = sizey
   def get_bottom_right(self):
       print '(%s, %s)' % (self._startx + self._sizex, self._starty + self._sizey)
   def move(self, pos):
       self._startx, self._starty = pos
   def resize(self, width, height):
       self._sizex = width
       self._sizey = height
   def __str__(self):
       return '((%s, %s), (%s, %s))' % (self._startx, self._starty, self._startx + self._sizex,   self._starty + self._sizey)

r = Rectangle((2, 3), 5, 7)

str(r)

r.move((5,6))

str(r)

r.resize(2,3)

str(r)

r.get_bottom_right()

我得到了正确答案,但是homeowork系统说错了。

错误:Rectangle类应该继承自对象类

谁能告诉我哪里错了?

2 个答案:

答案 0 :(得分:2)

您正在寻找,

class Rectangle(object):
...

这是一个新式的课程。在此SO帖子中阅读更多内容:What is the difference between old style and new style classes in Python?

我也觉得你的家庭作业系统正在使用pylint来验证/评分您的代码。您可能希望坚持PEP8标准。

答案 1 :(得分:1)

Rectangle类中的另一个错误是get_bottom_right()方法应该返回一个元组,打印它。当然,在解释器中返回一个元组而不指定它将导致它被打印。