import json from unilabos_msgs.msg import Resource from unilabos.ros.msgs.message_converter import convert_from_ros_msg class RegularContainer(object): # 第一个参数必须是id传入 # noinspection PyShadowingBuiltins def __init__(self, id: str, data: dict = None): self.id = id self.ulr_resource = Resource() self.ulr_resource_data = data @property def ulr_resource_data(self): return json.loads(self.ulr_resource.data) if self.ulr_resource.data else {} @ulr_resource_data.setter def ulr_resource_data(self, value: dict): self.ulr_resource.data = json.dumps(value) @property def liquid_type(self): return self.ulr_resource_data.get("liquid_type", None) @liquid_type.setter def liquid_type(self, value: str): if value is not None: self.ulr_resource_data["liquid_type"] = value else: self.ulr_resource_data.pop("liquid_type", None) @property def liquid_volume(self): return self.ulr_resource_data.get("liquid_volume", None) @liquid_volume.setter def liquid_volume(self, value: float): if value is not None: self.ulr_resource_data["liquid_volume"] = value else: self.ulr_resource_data.pop("liquid_volume", None) def get_ulr_resource(self) -> Resource: """ 获取UlrResource对象 :return: UlrResource对象 """ return self.ulr_resource def get_ulr_resource_as_dict(self) -> Resource: """ 获取UlrResource对象 :return: UlrResource对象 """ return convert_from_ros_msg(self.ulr_resource) def __str__(self): return f"{self.id}"