【发布时间】:2019-09-27 23:55:53
【问题描述】:
我正在创建一个对象块,我在其他参数中分配了 X 和 Y 位置,我希望能够通过 move() 方法通过 x 和 y 单位移动它并拥有原始 @ 987654324@ 和 y 位置已更新,因此当我在移动对象之前调用说 xyRange() 时,我得到了原来的 x、y 位置,当我在 move() 之后这样做时,我得到了更新了x、y 的位置。
以下是我尝试过的,但我认为我错过了一些关键方面,因为我收到一个错误,即我的对象“块”没有这样的属性。
def X(self):
x = self.xPosition
return x
def Y(self):
y = self.yPosition
return y
def xyRange(self):
xRange = self.X() + self.toBlock.absX()
yRange = self.Y() + self.toBlock.absY()
return xRange, yRange
def move(self, moveX=None, moveY=None):
absX = self.absX()
absY = self.absY()
self.moveX = moveX
if(self.moveX == None):
moveX = 0
self.moveY = moveY
if(self.moveY == None):
moveY = 0
absoluteX = absX + moveX
absoluteY = absY + moveY
return absoluteX, absoluteY
def absX(self):
absoluteX = self.X() + self.toBlockId.absX()
return absoluteX
def absY(self):
absoluteY = self.Y() + self.toBlockId.absY()
return absoluteY
所以我有函数 X() 和 Y() 从构造函数中获取参数并能够在其他函数中操作它们,还有 absX() 和 absY() 来跟踪对象在网格中的实际位置和xyRange() 函数基本上做同样的事情,但只返回 x、y 参数的元组(为了方便起见,我们说一下)。但我似乎不知道如何更新我原来的 X 和 Y 位置。
假设我从返回 (2, 2) 的 block1.xyRange() 开始
然后我block1.move(2, 2),当我再次运行block1.xyRange() 时,你会期望它会返回(4, 4)。但是,如果我尝试将 move 函数中的 self.moveX 和 self.moveY 参数添加到 X() 和 Y() 函数中,则会收到错误消息,指出对象“块”没有属性“moveX”或“moveY”。我认为这是因为它自己调用。但我不知道如何解决它。
任何建议将不胜感激。
【问题讨论】:
标签: python function class parameter-passing coordinates