我执行了移动矩形中点的功能,两个点的值都返回none和none。当首选方法时,我不想返回值,是否有另一种选择。
class Point:
def move(self, dx, dy):
'''(Point,number,number)->None
changes the x and y coordinates by dx and dy'''
self.x += dx
self.y += dy
class Rectangle:
def move(self, dx, dy):
'''(Rectangle, number, number) -> None
changes the x and y coordinates by dx and dy'''
self.bottom_left = self.bottom_left.move(dx, dy)
self.top_right = self.top_right.move(dx, dy)
答案 0 :(得分:2)
没有必要将结果分配回点; Point.move
直接修改其参数,而不是返回新的Point
对象。
class Rectangle:
def move(self, dx, dy):
self.bottom_left.move(dx, dy)
self.top_right.move(dx, dy)
答案 1 :(得分:1)
在矩形类中,如果使用
设置角落self.corner = point.move(dx, dy)
函数Point.move()需要返回一些东西,否则默认返回None。你可以通过返回Point.move
的self来解决这个问题class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def move(self, dx, dy):
'''(Point,number,number)->None
changes the x and y coordinates by dx and dy'''
self.x += dx
self.y += dy
return self
在不更改Rectangle代码的情况下解决了问题。你也可以这样做
class Rectangle(object):
def __init__(self, top_right, bottom_left):
self.top_right = Point(*top_right)
self.bottom_left = Point(*bottom_left)
def move(self, dx, dy):
'''(Rectangle, number, number) -> None
changes the x and y coordinates by dx and dy'''
self.bottom_left.move(dx, dy)
self.top_right.move(dx, dy)
这可能会好一点,但第一个例子解释了为什么你没有。