为什么所有对象都填充相同的坐标?

时间:2019-06-27 17:43:36

标签: python

我正在为机器人创建一个程序来绘制迷宫。我正在Python中执行此操作,问题是当我尝试通过遍历对象与对象创建3D数组时,不知何故,每个对象都填充了[9,9,2]。

a["entryRef"] = CKRecord.Reference(record: e, action: .deleteSelf)

2 个答案:

答案 0 :(得分:5)

您已经在类级别定义了coordinates,以便在所有Field实例之间共享属性。要解决此问题,请尝试在coordinates方法中定义__init__

class Field:

    def __init__(self, x_arg, y_arg, z_arg = None):
        self.coordinates = {}
        self.coordinates['x'] = x_arg
        self.coordinates['y'] = y_arg
        ...

答案 1 :(得分:3)

您在任何方法之外都没有行coordinates = {}。这意味着字典是一个类对象,对该类的所有实例都相同。

由于您希望每个实例的值都不同,因此需要将其放在一个方法中:__init__方法很精确。将空字典分配给self,以便每个对象实例都有自己的字典。因此,请使用以下内容:

class Field:

    def __init__(self, x_arg, y_arg, z_arg = None):
        self.coordinates = {}
        self.coordinates['x'] = x_arg
        self.coordinates['y'] = y_arg
        if z_arg is not None:
            self.coordinates['z'] = z_arg
        else:
            self.coordinates['z'] = 0