首页 > 解决方案 > 在我使用方法移动对象后,有没有办法更新对象的原始 x 和 y 位置?

问题描述

我正在创建一个对象块,我在其他参数中分配了一个 X 和 Y 位置,我希望能够通过一个方法move()通过xy单位移动它并更新原始xy位置,以便当我xyRange()在移动之前调用说对象,我得到原始xy位置,当我这样做之后move(),我得到更新xy位置。

以下是我尝试过的,但我认为我缺少一些关键方面,因为我收到一个错误,即我的对象“块”没有这样的属性。

    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 位置。

假设我从 a 开始, 然后block1.xyRange()返回,当我再次运行时,你会期望它会返回。但是,如果我尝试将move 函数中的and参数添加到and函数,我会收到一条错误消息,指出对象 'Block' 没有属性 'moveX' 或 'moveY'。我认为这是因为它自己调用。但我不知道如何解决它。(2, 2)block1.move(2, 2)block1.xyRange()(4, 4)self.moveXself.moveYX()Y()

任何建议将不胜感激。

标签: pythonfunctionclassparameter-passingcoordinates

解决方案


在您的 move 方法中,您忘记将更新的(absoluteX 和 absoluteY)值设置为对象字段(self.xPosition 和 self.yPosition)。这就是为什么你永远不会得到更新的值。


推荐阅读