这是问题,
定义类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类应该继承自对象类
谁能告诉我哪里错了?
答案 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()
方法应该返回一个元组,不打印它。当然,在解释器中返回一个元组而不指定它将导致它被打印。