为什么这个存储库上的代码 使用 DeepCopy?
def connect(self,resourceName,ID_Query=True,Reset_Device=True):
if not self.isConnected:
try:
selfCopy=deepcopy(self)
selfCopy.TLPM=self.TLPM
selfCopy.deviceNET=selfCopy.TLPM(resourceName,ID_Query,Reset_Device)
self.logger.info(f'|{self.__class__.__name__}| Successfully connect the device: {resourceName}')
_index=self.resourceName.index(resourceName)
selfCopy.resourceNameConnected=resourceName
selfCopy.isConnected=True
selfCopy.resourceName=selfCopy.resourceName[_index]
selfCopy.modelName=selfCopy.modelName[_index]
selfCopy.serialNumber=selfCopy.serialNumber[_index]
selfCopy.manufacturer=selfCopy.manufacturer[_index]
self.isConnected=False
return selfCopy
except:
selfCopy.logger.error(f'|{self.__class__.__name__}| Fail to connect the device.')
我想知道当使用深度复制时他的想法是什么,它应该有一个目的,我只是没有看到它。
我只是尝试删除 DeepCopy 并使用
self.
并且它有效。
您的代码首先复制一个对象,然后对副本进行就地修改(突变)并返回该突变副本。
如果您没有先创建副本,那么您将拥有对原始副本的引用——您不仅会改变副本,还会改变原始副本。