删除运行两次但不执行任何操作

时间:2018-02-04 13:59:01

标签: python class object python-3.6 del

我想移动一个对象,但删除没有正常工作......

它给出以下错误: Indexerror:从空列表中弹出。

我有这个代码用于删除:

def remove(xpos, ypos):
    pos = [xpos,ypos]
    if pos in objectpos:
        objid = objectpos.index(pos)
        objects.pop(objid)
        objectpos.pop(objid)

这是应该调用remove的类:

class object:

    def __init__(self, xpos, ypos, char):
        if xpos <= 0 or xpos > width:
            raise PlacementError("Error, object out of bounds.")
        if ypos <= 0 or ypos > height:
            raise PlacementError("Error, object out of bounds.")
        self.pos = [xpos,ypos]
        remove(xpos, ypos)
        objects.append(self)
        objectpos.append(self.pos)
        self.xpos = xpos
        self.ypos = ypos
        self.char = char

    def vertical(self, dis):
        self.to_y = self.ypos + int(dis)
        object(self.to_y, self.xpos, self.char)
        remove(self.xpos, self.ypos)

    def horizontal(self, dis):
        self.to_x = self.xpos + int(dis)
        object(self.ypos, self.to_x, self.char)
        remove(self.xpos, self.ypos)

    def __del__(self):
        remove(self.xpos, self.ypos)

请注意,__del__未被调用! 我只叫水平和垂直。

我尝试打印对象列表等,在发生错误之前输出所有内容两次。

这可能不是最好的方法,但程序的速度对我来说并不重要我只是想知道为什么它运行两次并给出错误。

谢谢!

0 个答案:

没有答案