我正在按照“如何像计算机科学家一样思考”这本书来学习 python,并且在理解类和对象章节时遇到了一些问题。
那里的一个练习说要编写一个名为 moveRect 的函数,该函数接受一个 Rectangle 和 2 个名为 dx& dy 的参数。它应该通过将 dx 添加到角的 x 坐标并将 dy 添加到角的 y 坐标来更改矩形的位置。
现在,我不确定我写的代码是否正确。所以,让我告诉你我想做什么,你可以告诉我我做对了吗?
首先我创建了一个类 Rectangle 然后我创建了它的一个实例并输入了详细信息,例如坐标 x 和 y 的值以及矩形的宽度和高度。
所以,这是我之前的代码:
class Rectangle:
pass
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
def moveRect(Rectangle,dx,dy):
Rectangle.x=Rectangle.x + dx
Rectangle.y=Rectangle.y + dy
dx=raw_input("enter dx value:")
dy=raw_input("enter dy value:")
moveRect(Rectangle,dx,dy)
但是当我运行这段代码时,它给了我一个属性错误并且:类 Rectangle 没有属性 x
因此,我将以下行移动到 moveRect 函数中
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
因此代码变成了:
class Rectangle:
pass
def moveRect(Rectangle,dx,dy):
Rectangle.x=Rectangle.x + dx
Rectangle.y=Rectangle.y + dy
rect=Rectangle()
rect.x=3.0
rect.y=4.0
rect.width=50
rect.height=120
dx=raw_input("enter dx value:")
dy=raw_input("enter dy value:")
moveRect(Rectangle,dx,dy)
但是,这段代码仍然给我一个错误。那么,这段代码到底有什么问题呢?此刻,我感觉好像我是通过反复试验来编写这段代码的,并在看到错误时更改了部分。我想正确理解这是如何工作的。所以,请对此有所了解。
《如何像计算机科学家一样思考》这本书在第 12 章中没有介绍 init,因此我需要在不使用 init 的情况下这样做。