我正在为机器人创建一个程序来绘制迷宫。我正在Python中执行此操作,问题是当我尝试通过遍历对象与对象创建3D数组时,不知何故,每个对象都填充了[9,9,2]。
a["entryRef"] = CKRecord.Reference(record: e, action: .deleteSelf)
答案 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