Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python对象属性随机删除自身_Python_Python 3.x_Python Object - Fatal编程技术网

python对象属性随机删除自身

python对象属性随机删除自身,python,python-3.x,python-object,Python,Python 3.x,Python Object,我在python对象中遇到了一个问题,我同时创建和迭代了许多对象 对象总是使用正确的属性创建的,但是当我迭代这些对象时,我检查对象中的某个属性,该特定属性从对象中随机删除,然后我得到一个错误,即该对象没有该属性 代码: 错误:“TracableTruck”对象没有属性“vehicle\u status” 请注意,这段代码在95%的时间里都适用于我,尽管所有对象都具有相同的结构,但对于随机对象也是如此 经过大量的调试,我只是不明白为什么会发生这种情况。该对象是正确创建的,如果我在迭代之前打印它,它

我在python对象中遇到了一个问题,我同时创建和迭代了许多对象

对象总是使用正确的属性创建的,但是当我迭代这些对象时,我检查对象中的某个属性,该特定属性从对象中随机删除,然后我得到一个错误,即该对象没有该属性

代码:

错误:“TracableTruck”对象没有属性“vehicle\u status”

请注意,这段代码在95%的时间里都适用于我,尽管所有对象都具有相同的结构,但对于随机对象也是如此

经过大量的调试,我只是不明白为什么会发生这种情况。该对象是正确创建的,如果我在迭代之前打印它,它确实具有“vehicle_status”属性,但在迭代之后,该属性从对象中消失

例如:

创建时的对象: {“对象ID”:55,“车辆类型”:“卡车”,“OTS”:“2020-03-10 16:07:16”,“车道ID”:2.0,“车辆状态”:“活动”}

迭代后的对象: {“对象ID”:55,“车辆类型”:“卡车”,“OTS”:“2020-03-10 16:07:16”,“车道ID”:2.0}

我希望比我更精通python的人能帮助我。 谢谢

编辑对象定义:

class TrackableTruck:
    def __init__(self, object_ID, vehicle_type, OTS, lane_ID, vehicle_status):

        # info from tracking server
        self.object_ID = object_ID
        self.vehicle_type = vehicle_type
        self.OTS = OTS
        self.lane_ID = lane_ID
        self.vehicle_status = vehicle_status
检查和更改车辆状态的代码:

d = pickle.loads(full_msg[self.HEADERSIZE:])
d = json.loads(d)
vehicle_type = str(d['vehicle_type'])
vehicle_lane = int(d['lane_ID'])
vehicle_id = int(d['object_ID'])
vehicle_status = d['vehicle_status']

if vehicle_lane == 1:
    trackable_vehicle = self.streetLane_1.get_vehicle(vehicle_id)

    if trackable_vehicle is None:
        self.streetLane_1.add_vehicle(d)

    else:
        trackable_vehicle.vehicle_status = 'DEAD'   
对象创建代码:

def object_decoder(self,json_obj):
      return TrackableTruck(int(json_obj['object_ID']), json_obj['vehicle_type'], json_obj['OTS'], json_obj['lane_ID'], json_obj['vehicle_status'])

def add_vehicle(self, json_obj):
      trackable_vehicle = self.object_decoder(json_obj)
      self.lane_vehciles[int(trackable_vehicle.object_ID)] = trackable_vehicle

请向我们展示更多的代码,尤其是init的类定义。在这个过程中,您是否在代码的其他地方使用该属性?因为你一定在某个地方做了些什么,事情并不是随机发生的。你确定你不是在self.lane\u vehciles.items()中把
上的车辆拼错了self.lane\u vehciles.items():
我们需要一个解决这个问题的机会。这包括足够的(理想情况下最小的)代码来实际再现错误,以及产生错误的输入、预期输出和实际输出(包括完整的回溯,如果适用)。在问题的主体部分,所有内容均为文本。根据提供的信息,解决方案可能与其他任何解决方案一样容易成为“火星人”。请提供“错误:'TracableTruck'对象没有“vehicle_status”属性”的完整回溯。
def object_decoder(self,json_obj):
      return TrackableTruck(int(json_obj['object_ID']), json_obj['vehicle_type'], json_obj['OTS'], json_obj['lane_ID'], json_obj['vehicle_status'])

def add_vehicle(self, json_obj):
      trackable_vehicle = self.object_decoder(json_obj)
      self.lane_vehciles[int(trackable_vehicle.object_ID)] = trackable_vehicle